github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/kv/kvserver/concurrency/testdata/concurrency_manager/basic (about) 1 new-txn name=txn1 ts=10,1 epoch=0 2 ---- 3 4 new-txn name=txn2 ts=12,1 epoch=0 5 ---- 6 7 new-txn name=txn3 ts=14,1 epoch=0 8 ---- 9 10 # ------------------------------------------------------------- 11 # Simple read-only request 12 # ------------------------------------------------------------- 13 14 new-request name=req1 txn=txn1 ts=10,1 15 get key=k 16 scan key=k endkey=k2 17 ---- 18 19 sequence req=req1 20 ---- 21 [1] sequence req1: sequencing request 22 [1] sequence req1: acquiring latches 23 [1] sequence req1: scanning lock table for conflicting locks 24 [1] sequence req1: sequencing complete, returned guard 25 26 debug-latch-manager 27 ---- 28 write count: 0 29 read count: 1 30 31 finish req=req1 32 ---- 33 [-] finish req1: finishing request 34 35 reset 36 ---- 37 38 # ------------------------------------------------------------- 39 # Simple read-write request that acquires a lock 40 # ------------------------------------------------------------- 41 42 new-request name=req2 txn=txn2 ts=12,1 43 put key=k value=v 44 ---- 45 46 sequence req=req2 47 ---- 48 [1] sequence req2: sequencing request 49 [1] sequence req2: acquiring latches 50 [1] sequence req2: scanning lock table for conflicting locks 51 [1] sequence req2: sequencing complete, returned guard 52 53 on-lock-acquired req=req2 key=k 54 ---- 55 [-] acquire lock: txn 00000002 @ k 56 57 debug-lock-table 58 ---- 59 global: num=1 60 lock: "k" 61 holder: txn: 00000002-0000-0000-0000-000000000000, ts: 0.000000012,1, info: unrepl epoch: 0, seqs: [0] 62 local: num=0 63 64 finish req=req2 65 ---- 66 [-] finish req2: finishing request 67 68 debug-lock-table 69 ---- 70 global: num=1 71 lock: "k" 72 holder: txn: 00000002-0000-0000-0000-000000000000, ts: 0.000000012,1, info: unrepl epoch: 0, seqs: [0] 73 local: num=0 74 75 reset 76 ---- 77 78 # Demonstrate that 'reset' clears the lock table. 79 debug-lock-table 80 ---- 81 global: num=0 82 local: num=0 83 84 # ------------------------------------------------------------- 85 # 1. Acquire a lock 86 # 2. Read-only requests blocks on lock 87 # 3. Lock is released 88 # 4. Read-only request proceeds 89 # 5. Read-write request blocks on latches 90 # 6. Requests proceed in order 91 # ------------------------------------------------------------- 92 93 sequence req=req2 94 ---- 95 [1] sequence req2: sequencing request 96 [1] sequence req2: acquiring latches 97 [1] sequence req2: scanning lock table for conflicting locks 98 [1] sequence req2: sequencing complete, returned guard 99 100 on-lock-acquired req=req2 key=k 101 ---- 102 [-] acquire lock: txn 00000002 @ k 103 104 finish req=req2 105 ---- 106 [-] finish req2: finishing request 107 108 new-request name=req3 txn=txn3 ts=14,1 109 get key=k 110 scan key=k endkey=k2 111 ---- 112 113 sequence req=req3 114 ---- 115 [2] sequence req3: sequencing request 116 [2] sequence req3: acquiring latches 117 [2] sequence req3: scanning lock table for conflicting locks 118 [2] sequence req3: waiting in lock wait-queues 119 [2] sequence req3: pushing timestamp of txn 00000002 above 0.000000014,1 120 [2] sequence req3: blocked on select in concurrency_test.(*cluster).PushTransaction 121 122 on-txn-updated txn=txn2 status=committed 123 ---- 124 [-] update txn: committing txn2 125 [2] sequence req3: resolving intent "k" for txn 00000002 with COMMITTED status 126 [2] sequence req3: acquiring latches 127 [2] sequence req3: scanning lock table for conflicting locks 128 [2] sequence req3: sequencing complete, returned guard 129 130 debug-lock-table 131 ---- 132 global: num=0 133 local: num=0 134 135 new-request name=req4 txn=txn1 ts=10,1 136 put key=k value=v 137 ---- 138 139 sequence req=req4 140 ---- 141 [3] sequence req4: sequencing request 142 [3] sequence req4: acquiring latches 143 [3] sequence req4: blocked on select in spanlatch.(*Manager).waitForSignal 144 145 debug-latch-manager 146 ---- 147 write count: 1 148 read count: 1 149 150 finish req=req3 151 ---- 152 [-] finish req3: finishing request 153 [3] sequence req4: scanning lock table for conflicting locks 154 [3] sequence req4: sequencing complete, returned guard 155 156 finish req=req4 157 ---- 158 [-] finish req4: finishing request 159 160 reset 161 ---- 162 163 # ------------------------------------------------------------- 164 # 1. Acquire a lock 165 # 2. Two read-only requests block on lock, one pushes 166 # 3. Txn is updated to a timestamp above the read's 167 # 4. Read-only request proceeds 168 # 5. Read-write request blocks on lock 169 # 6. Lock is released 170 # 7. Read-write request blocks on latches 171 # 8. Requests proceed in order 172 # ------------------------------------------------------------- 173 174 sequence req=req2 175 ---- 176 [1] sequence req2: sequencing request 177 [1] sequence req2: acquiring latches 178 [1] sequence req2: scanning lock table for conflicting locks 179 [1] sequence req2: sequencing complete, returned guard 180 181 on-lock-acquired req=req2 key=k 182 ---- 183 [-] acquire lock: txn 00000002 @ k 184 185 finish req=req2 186 ---- 187 [-] finish req2: finishing request 188 189 new-request name=req5 txn=none ts=14,1 190 scan key=a endkey=m 191 ---- 192 193 sequence req=req5 194 ---- 195 [2] sequence req5: sequencing request 196 [2] sequence req5: acquiring latches 197 [2] sequence req5: scanning lock table for conflicting locks 198 [2] sequence req5: waiting in lock wait-queues 199 [2] sequence req5: pushing timestamp of txn 00000002 above 0.000000014,1 200 [2] sequence req5: blocked on select in concurrency_test.(*cluster).PushTransaction 201 202 new-request name=req6 txn=none ts=16,1 203 scan key=c endkey=z 204 ---- 205 206 sequence req=req6 207 ---- 208 [3] sequence req6: sequencing request 209 [3] sequence req6: acquiring latches 210 [3] sequence req6: scanning lock table for conflicting locks 211 [3] sequence req6: waiting in lock wait-queues 212 [3] sequence req6: blocked on select in concurrency.(*lockTableWaiterImpl).WaitOn 213 214 on-txn-updated txn=txn2 status=pending ts=18,1 215 ---- 216 [-] update txn: increasing timestamp of txn2 217 [2] sequence req5: resolving intent "k" for txn 00000002 with PENDING status 218 [2] sequence req5: acquiring latches 219 [2] sequence req5: scanning lock table for conflicting locks 220 [2] sequence req5: sequencing complete, returned guard 221 [3] sequence req6: acquiring latches 222 [3] sequence req6: scanning lock table for conflicting locks 223 [3] sequence req6: sequencing complete, returned guard 224 225 new-request name=req7 txn=none ts=12,1 226 put key=k value=v 227 ---- 228 229 sequence req=req7 230 ---- 231 [4] sequence req7: sequencing request 232 [4] sequence req7: acquiring latches 233 [4] sequence req7: blocked on select in spanlatch.(*Manager).waitForSignal 234 235 finish req=req5 236 ---- 237 [-] finish req5: finishing request 238 239 finish req=req6 240 ---- 241 [-] finish req6: finishing request 242 [4] sequence req7: scanning lock table for conflicting locks 243 [4] sequence req7: waiting in lock wait-queues 244 [4] sequence req7: pushing txn 00000002 to abort 245 [4] sequence req7: blocked on select in concurrency_test.(*cluster).PushTransaction 246 247 on-txn-updated txn=txn2 status=committed 248 ---- 249 [-] update txn: committing txn2 250 [4] sequence req7: resolving intent "k" for txn 00000002 with COMMITTED status 251 [4] sequence req7: acquiring latches 252 [4] sequence req7: scanning lock table for conflicting locks 253 [4] sequence req7: sequencing complete, returned guard 254 255 finish req=req7 256 ---- 257 [-] finish req7: finishing request 258 259 reset 260 ----