run trace stats ok
with t=A
  txn_begin ts=2
  put k=k1 v=v1
----
>> txn_begin ts=2 t=A
txn: "A" meta={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=2.000000000,0 min=0,0 seq=0} lock=true stat=PENDING rts=2.000000000,0 wto=false gul=0,0
>> put k=k1 v=v1 t=A
put: lock acquisition = {k1 id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=2.000000000,0 min=0,0 seq=0 Replicated Intent []}
meta: "k1"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=2.000000000,0 min=0,0 seq=0} ts=2.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k1"/2.000000000,0 -> /BYTES/v1
stats: key_count=+1 key_bytes=+15 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+70 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+98
stats: key_count=1 key_bytes=15 val_count=1 val_bytes=55 live_count=1 live_bytes=70 intent_count=1 intent_bytes=19 lock_count=1 lock_age=98

run trace stats ok
with t=A
  txn_advance ts=3
  txn_step
  put k=k1 v=v1
  put k=k2 v=v2
----
>> txn_advance ts=3 t=A
txn: "A" meta={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=0} lock=true stat=PENDING rts=2.000000000,0 wto=false gul=0,0
>> txn_step t=A
txn: "A" meta={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} lock=true stat=PENDING rts=2.000000000,0 wto=false gul=0,0
>> put k=k1 v=v1 t=A
put: lock acquisition = {k1 id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1 Replicated Intent []}
meta: "k1"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 ih={{0 /BYTES/v1}} mergeTs=<nil> txnDidNotUpdateMeta=false
data: "k1"/3.000000000,0 -> /BYTES/v1
stats: val_bytes=+13 live_bytes=+13 lock_age=-1
>> put k=k2 v=v2 t=A
put: lock acquisition = {k2 id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1 Replicated Intent []}
meta: "k1"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 ih={{0 /BYTES/v1}} mergeTs=<nil> txnDidNotUpdateMeta=false
data: "k1"/3.000000000,0 -> /BYTES/v1
meta: "k2"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k2"/3.000000000,0 -> /BYTES/v2
stats: key_count=+1 key_bytes=+15 val_count=+1 val_bytes=+57 live_count=+1 live_bytes=+72 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+97
stats: key_count=2 key_bytes=30 val_count=2 val_bytes=125 live_count=2 live_bytes=155 intent_count=2 intent_bytes=38 lock_count=2 lock_age=194

run trace stats ok
put k=k3 v=v3 ts=1
----
>> put k=k3 v=v3 ts=1
meta: "k1"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 ih={{0 /BYTES/v1}} mergeTs=<nil> txnDidNotUpdateMeta=false
data: "k1"/3.000000000,0 -> /BYTES/v1
meta: "k2"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k2"/3.000000000,0 -> /BYTES/v2
data: "k3"/1.000000000,0 -> /BYTES/v3
stats: key_count=+1 key_bytes=+15 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+22
stats: key_count=3 key_bytes=45 val_count=3 val_bytes=132 live_count=3 live_bytes=177 intent_count=2 intent_bytes=38 lock_count=2 lock_age=194

run trace stats ok
with t=A
  put k=k3 v=v33
----
>> put k=k3 v=v33 t=A
put: lock acquisition = {k3 id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1 Replicated Intent []}
meta: "k1"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 ih={{0 /BYTES/v1}} mergeTs=<nil> txnDidNotUpdateMeta=false
data: "k1"/3.000000000,0 -> /BYTES/v1
meta: "k2"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k2"/3.000000000,0 -> /BYTES/v2
meta: "k3"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=8 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k3"/3.000000000,0 -> /BYTES/v33
data: "k3"/1.000000000,0 -> /BYTES/v3
stats: key_bytes=+12 val_count=+1 val_bytes=+58 live_bytes=+51 gc_bytes_age=+1843 intent_count=+1 intent_bytes=+20 lock_count=+1 lock_age=+97
stats: key_count=3 key_bytes=57 val_count=4 val_bytes=190 live_count=3 live_bytes=228 gc_bytes_age=1843 intent_count=3 intent_bytes=58 lock_count=3 lock_age=291

# transactionDidNotUpdateMeta (TDNUM) is false below for k2 and k3 since
# disallowSeparatedIntents=true causes mvcc.go to always set it to false to maintain
# consistency in a mixed version cluster.
run trace stats ok
with t=A
  resolve_intent k=k1
  resolve_intent k=k2 status=ABORTED
  resolve_intent k=k3 status=ABORTED
  txn_remove
----
>> resolve_intent k=k1 t=A
called ClearEngineKey(/Local/Lock"k1"/0300000001000000000000000000000000)
resolve_intent: "k1" -> resolved key = true
data: "k1"/3.000000000,0 -> /BYTES/v1
meta: "k2"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k2"/3.000000000,0 -> /BYTES/v2
meta: "k3"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=8 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k3"/3.000000000,0 -> /BYTES/v33
data: "k3"/1.000000000,0 -> /BYTES/v3
stats: val_bytes=-61 live_bytes=-61 intent_count=-1 intent_bytes=-19 lock_count=-1 lock_age=-97
>> resolve_intent k=k2 status=ABORTED t=A
called ClearEngineKey(/Local/Lock"k2"/0300000001000000000000000000000000)
resolve_intent: "k2" -> resolved key = true
data: "k1"/3.000000000,0 -> /BYTES/v1
meta: "k3"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=3.000000000,0 min=0,0 seq=1} ts=3.000000000,0 del=false klen=12 vlen=8 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "k3"/3.000000000,0 -> /BYTES/v33
data: "k3"/1.000000000,0 -> /BYTES/v3
stats: key_count=-1 key_bytes=-15 val_count=-1 val_bytes=-57 live_count=-1 live_bytes=-72 intent_count=-1 intent_bytes=-19 lock_count=-1 lock_age=-97
>> resolve_intent k=k3 status=ABORTED t=A
called ClearEngineKey(/Local/Lock"k3"/0300000001000000000000000000000000)
resolve_intent: "k3" -> resolved key = true
data: "k1"/3.000000000,0 -> /BYTES/v1
data: "k3"/1.000000000,0 -> /BYTES/v3
stats: key_bytes=-12 val_count=-1 val_bytes=-58 live_bytes=-51 gc_bytes_age=-1843 intent_count=-1 intent_bytes=-20 lock_count=-1 lock_age=-97
>> txn_remove t=A
stats: key_count=2 key_bytes=30 val_count=2 val_bytes=14 live_count=2 live_bytes=44
