Skip to content

Commit 2acd5ad

Browse files
committed
Fixed tick merging issues
1 parent 7c76a64 commit 2acd5ad

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

reference/async_reference/test/async_ref_test.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ TEST(AsyncRef, AddUpdateAndRemove) {
237237
}
238238

239239
ecsact_async_disconnect();
240+
241+
// NOTE: Maybe merging enqueues is affecting the callbacks?
240242
}
241243

242244
TEST(AsyncRef, TryMergeFailure) {

reference/async_reference/tick_manager/tick_manager.cc

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,7 @@ types::async_error tick_manager::validate_pending_options() {
5252
return result;
5353
}
5454

55-
result.error =
56-
util::validate_merge_options(merged_options, pending.options);
57-
58-
if(result.error != ECSACT_ASYNC_OK) {
59-
result.request_ids.push_back(pending.request_id);
60-
return result;
61-
}
62-
63-
util::merge_options(merged_options, pending.options);
64-
65-
result.error = upsert_validated_tick(merged_options, key);
55+
result.error = upsert_validated_tick(pending.options, key);
6656

6757
if(result.error != ECSACT_ASYNC_OK) {
6858
auto requests = util::get_request_ids_from_pending_exec_options(
@@ -84,8 +74,15 @@ ecsact_async_error tick_manager::upsert_validated_tick(
8474
int32_t requested_tick
8575
) {
8676
if(validated_tick_map.contains(requested_tick)) {
87-
auto existing_options = validated_tick_map[requested_tick];
88-
return util::validate_merge_options(existing_options, validated_options);
77+
auto& existing_options = validated_tick_map[requested_tick];
78+
auto error =
79+
util::validate_merge_options(existing_options, validated_options);
80+
if(error == ECSACT_ASYNC_OK) {
81+
util::merge_options(validated_options, existing_options);
82+
existing_options = validated_options;
83+
return error;
84+
}
85+
return error;
8986
} else {
9087
validated_tick_map.insert(std::pair(requested_tick, validated_options));
9188
return ECSACT_ASYNC_OK;

0 commit comments

Comments
 (0)