Skip to content

Commit 52f619c

Browse files
authored
Log new object versions immediately after creation (#1007)
1 parent 108f8a2 commit 52f619c

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

production/db/core/src/gaia_ptr_client.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -425,16 +425,16 @@ gaia_ptr_t gaia_ptr_t::create(gaia_id_t id, gaia_type_t type, reference_offset_t
425425
ASSERT_INVARIANT(data_size == 0, "Null payload with non-zero payload size!");
426426
}
427427

428+
WRITE_PROTECT(obj.to_offset());
429+
client_t::txn_log(locator, c_invalid_gaia_offset, obj.to_offset(), gaia_operation_t::create);
430+
428431
auto_connect_to_parent(
429432
id,
430433
type,
431434
// NOLINTNEXTLINE: cppcoreguidelines-pro-type-const-cast
432435
const_cast<gaia_id_t*>(obj_ptr->references()),
433436
reinterpret_cast<const uint8_t*>(obj_ptr->data()));
434437

435-
WRITE_PROTECT(locator_to_offset(locator));
436-
client_t::txn_log(locator, c_invalid_gaia_offset, obj.to_offset(), gaia_operation_t::create);
437-
438438
obj.create_insert_trigger(type, id);
439439
return obj;
440440
}
@@ -600,6 +600,9 @@ gaia_ptr_t& gaia_ptr_t::update_payload(size_t data_size, const void* data)
600600
new_this->num_references = old_this->num_references;
601601
memcpy(new_this->payload + references_size, data, data_size);
602602

603+
WRITE_PROTECT(to_offset());
604+
client_t::txn_log(m_locator, old_offset, to_offset(), gaia_operation_t::update);
605+
603606
auto new_data = reinterpret_cast<const uint8_t*>(data);
604607
auto old_data = reinterpret_cast<const uint8_t*>(old_this->payload);
605608
const uint8_t* old_data_payload = old_data + references_size;
@@ -613,10 +616,6 @@ gaia_ptr_t& gaia_ptr_t::update_payload(size_t data_size, const void* data)
613616
new_data,
614617
changed_fields);
615618

616-
WRITE_PROTECT(to_offset());
617-
618-
client_t::txn_log(m_locator, old_offset, to_offset(), gaia_operation_t::update);
619-
620619
if (client_t::is_valid_event(new_this->type))
621620
{
622621
client_t::s_events.emplace_back(event_type_t::row_update, new_this->type, new_this->id, changed_fields, get_txn_id());

production/tools/gaia_translate/tests/test_connect_disconnect.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,7 @@ TEST_F(test_connect_disconnect, test_disconnect_1_1)
162162
gaia::db::commit_transaction();
163163
}
164164

165-
// Temporarily disabled until https://gaiaplatform.atlassian.net/browse/GAIAPLAT-1501 is resolved.
166-
TEST_F(test_connect_disconnect, DISABLED_disconnect_delete)
165+
TEST_F(test_connect_disconnect, disconnect_delete)
167166
{
168167
gaia::rules::subscribe_ruleset("test_disconnect_delete");
169168

0 commit comments

Comments
 (0)