diff --git a/src/include/btree.i b/src/include/btree.i index 149f43046..ed993db7f 100644 --- a/src/include/btree.i +++ b/src/include/btree.i @@ -1160,20 +1160,21 @@ __wt_page_del_active( { WT_PAGE_DELETED *page_del; uint8_t prepare_state; + bool visible; if ((page_del = ref->page_del) == NULL) return (false); if (page_del->txnid == WT_TXN_ABORTED) return (false); - WT_ORDERED_READ(prepare_state, page_del->prepare_state); - if (prepare_state == WT_PREPARE_INPROGRESS || - prepare_state == WT_PREPARE_LOCKED) - return (true); - return (visible_all ? - !__wt_txn_visible_all(session, + visible = (visible_all ? + __wt_txn_visible_all(session, page_del->txnid, WT_TIMESTAMP_NULL(&page_del->timestamp)) : - !__wt_txn_visible(session, + __wt_txn_visible(session, page_del->txnid, WT_TIMESTAMP_NULL(&page_del->timestamp))); + if (!visible) + return (true); + WT_ORDERED_READ(prepare_state, page_del->prepare_state); + return (prepare_state != WT_PREPARE_INPROGRESS); } /* diff --git a/test/format/ops.c b/test/format/ops.c index 6930e470b..585d4f1c2 100644 --- a/test/format/ops.c +++ b/test/format/ops.c @@ -458,9 +458,10 @@ snap_check(WT_CURSOR *cursor, print_item_data( " found", value->data, value->size); - testutil_die(ret, + fprintf(stderr, "snapshot-isolation: %.*s search mismatch", - (int)key->size, key->data); + (int)key->size, (char *)key->data); + __wt_abort((WT_SESSION_IMPL *)cursor->session); /* NOTREACHED */ case VAR: fprintf(stderr, @@ -1105,7 +1106,7 @@ update_instead_of_chosen_op: * If prepare configured, prepare the transaction 10% of the * time. */ - if (g.c_prepare && mmrand(&tinfo->rnd, 1, 10) == 1) { + if (g.c_prepare && mmrand(&tinfo->rnd, 1, 4) == 1) { ret = prepare_transaction(tinfo, session); testutil_assert(ret == 0 || ret == WT_PREPARE_CONFLICT); if (ret == WT_PREPARE_CONFLICT)