github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/kv/kvclient/kvcoord/testdata/savepoints (about) 1 subtest release 2 3 begin 4 ---- 5 0 <noignore> 6 7 put k a 8 ---- 9 10 get k 11 ---- 12 "k" -> a 13 14 savepoint x 15 ---- 16 1 <noignore> 17 18 put k b 19 ---- 20 21 get k 22 ---- 23 "k" -> b 24 25 release x 26 ---- 27 2 <noignore> 28 29 get k 30 ---- 31 "k" -> b 32 33 commit 34 ---- 35 36 begin 37 ---- 38 0 <noignore> 39 40 get k 41 ---- 42 "k" -> b 43 44 commit 45 ---- 46 47 subtest end 48 49 50 subtest rollback 51 52 begin 53 ---- 54 0 <noignore> 55 56 put k a 57 ---- 58 59 get k 60 ---- 61 "k" -> a 62 63 savepoint x 64 ---- 65 1 <noignore> 66 67 put k b 68 ---- 69 70 get k 71 ---- 72 "k" -> b 73 74 rollback x 75 ---- 76 2 [2-2] 77 78 get k 79 ---- 80 "k" -> a 81 82 commit 83 ---- 84 85 begin 86 ---- 87 0 <noignore> 88 89 get k 90 ---- 91 "k" -> a 92 93 commit 94 ---- 95 96 subtest end 97 98 subtest rollback_after_nested_release 99 100 begin 101 ---- 102 0 <noignore> 103 104 put k ar 105 ---- 106 107 savepoint x 108 ---- 109 1 <noignore> 110 111 put k br 112 ---- 113 114 savepoint y 115 ---- 116 2 <noignore> 117 118 put k cr 119 ---- 120 121 release y 122 ---- 123 3 <noignore> 124 125 put k dr 126 ---- 127 128 rollback x 129 ---- 130 4 [2-4] 131 132 get k 133 ---- 134 "k" -> ar 135 136 commit 137 ---- 138 139 begin 140 ---- 141 0 <noignore> 142 143 get k 144 ---- 145 "k" -> ar 146 147 commit 148 ---- 149 150 subtest end 151 152 subtest disjoin_rollbacks 153 154 begin 155 ---- 156 0 <noignore> 157 158 put a d1 159 ---- 160 161 put b d1 162 ---- 163 164 savepoint x 165 ---- 166 2 <noignore> 167 168 put a d2 169 ---- 170 171 rollback x 172 ---- 173 3 [3-3] 174 175 put c d1 176 ---- 177 178 savepoint x 179 ---- 180 4 [3-3] 181 182 put b 2 183 ---- 184 185 rollback x 186 ---- 187 5 [3-3][5-5] 188 189 put d 1 190 ---- 191 192 193 get a 194 ---- 195 "a" -> d1 196 197 get b 198 ---- 199 "b" -> d1 200 201 get c 202 ---- 203 "c" -> d1 204 205 get d 206 ---- 207 "d" -> 1 208 209 commit 210 ---- 211 212 begin 213 ---- 214 0 <noignore> 215 216 get a 217 ---- 218 "a" -> d1 219 220 get b 221 ---- 222 "b" -> d1 223 224 get c 225 ---- 226 "c" -> d1 227 228 get d 229 ---- 230 "d" -> 1 231 232 commit 233 ---- 234 235 subtest end 236 237 238 subtest rollback_with_no_op 239 240 begin 241 ---- 242 0 <noignore> 243 244 put k nop 245 ---- 246 247 savepoint x 248 ---- 249 1 <noignore> 250 251 rollback x 252 ---- 253 1 <noignore> 254 255 release x 256 ---- 257 1 <noignore> 258 259 commit 260 ---- 261 262 subtest end 263 264 subtest double_rollback_ok 265 266 begin 267 ---- 268 0 <noignore> 269 270 put k init 271 ---- 272 273 commit 274 ---- 275 276 begin 277 ---- 278 0 <noignore> 279 280 savepoint x 281 ---- 282 0 <noignore> 283 284 put k da 285 ---- 286 287 rollback x 288 ---- 289 1 [1-1] 290 291 rollback x 292 ---- 293 1 [1-1] 294 295 get k 296 ---- 297 "k" -> init 298 299 put k db 300 ---- 301 302 rollback x 303 ---- 304 2 [1-2] 305 306 commit 307 ---- 308 309 begin 310 ---- 311 0 <noignore> 312 313 get k 314 ---- 315 "k" -> init 316 317 commit 318 ---- 319 320 subtest end 321 322 subtest rollback_across_retry 323 begin 324 ---- 325 0 <noignore> 326 327 savepoint x 328 ---- 329 0 <noignore> 330 331 retry 332 ---- 333 synthetic error: TransactionRetryWithProtoRefreshError: forced retry 334 epoch: 0 -> 1 335 336 release x 337 ---- 338 0 <noignore> 339 340 rollback x 341 ---- 342 0 <noignore> 343 344 subtest end 345 346 347 348 subtest rollback_after_failed_cput 349 # CPut errors are white-listed to allow a rollback to savepoint afterwards. 350 351 begin 352 ---- 353 0 <noignore> 354 355 savepoint x 356 ---- 357 0 <noignore> 358 359 cput k v bogus_expected 360 ---- 361 (*roachpb.ConditionFailedError) unexpected value 362 363 rollback x 364 ---- 365 1 [1-1] 366 367 subtest end 368 369 370 371 subtest rollback_after_random_err 372 # Only CPut errors allow rollbacks after them. Any other error results in the rollback failing. 373 374 begin 375 ---- 376 0 <noignore> 377 378 savepoint x 379 ---- 380 0 <noignore> 381 382 inject-error 383 ---- 384 injected error 385 386 rollback x 387 ---- 388 (*telemetrykeys.withTelemetry) unimplemented: cannot rollback to savepoint after error 389 390 subtest end 391 392 393 394 subtest rollback_across_abort 395 396 begin 397 ---- 398 0 <noignore> 399 400 savepoint x 401 ---- 402 0 <noignore> 403 404 abort 405 ---- 406 (*roachpb.TransactionRetryWithProtoRefreshError) 407 txn id changed 408 409 release x 410 ---- 411 0 <noignore> 412 413 rollback x 414 ---- 415 0 <noignore> 416 417 subtest end 418 419 subtest rollback_across_retry_fails_for_non-initial_savepoint 420 # The difference from the previous test is that here we do a write before 421 # creating the savepoint. 422 begin 423 ---- 424 0 <noignore> 425 426 put k a 427 ---- 428 429 savepoint x 430 ---- 431 1 <noignore> 432 433 retry 434 ---- 435 synthetic error: TransactionRetryWithProtoRefreshError: forced retry 436 epoch: 0 -> 1 437 438 rollback x 439 ---- 440 (*roachpb.TransactionRetryWithProtoRefreshError) TransactionRetryWithProtoRefreshError: cannot rollback to savepoint after a transaction restart 441 442 subtest end