summaryrefslogtreecommitdiffstats
path: root/include/framework/structure
diff options
context:
space:
mode:
authorDouglas Rumbaugh <dbr4@psu.edu>2023-11-13 10:41:13 -0500
committerDouglas Rumbaugh <dbr4@psu.edu>2023-11-13 10:41:13 -0500
commit83486744600e8be338c75c2e3d2339452a392a9d (patch)
tree1599636939a2e2146c4a66c584cdd035d6b803ba /include/framework/structure
parent39d22316be1708073e4fe1f708814cc801ecdc69 (diff)
downloaddynamic-extension-83486744600e8be338c75c2e3d2339452a392a9d.tar.gz
Fixed merge logic bug in tiering
In InternalLevel::clone(), the m_shard_cnt variable was not being set appropriately in the clone, resulting in the record counts reported for a multi-shard level to be reported incorrectly. In DynamicExtension::merge(), the merges were being performed in the wrong order, resulting in multi-level merges deleting records. The leveling tests all passed even with this bug for some reason, but it caused tiering tests to fail. It isn't clear _why_ leveling appeared to work, but the bug is now fixed, so that's largely irrelevant I suppose.
Diffstat (limited to 'include/framework/structure')
-rw-r--r--include/framework/structure/InternalLevel.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/framework/structure/InternalLevel.h b/include/framework/structure/InternalLevel.h
index 00e0c58..d146b73 100644
--- a/include/framework/structure/InternalLevel.h
+++ b/include/framework/structure/InternalLevel.h
@@ -219,6 +219,7 @@ public:
for (size_t i=0; i<m_shard_cnt; i++) {
new_level->m_shards[i] = m_shards[i];
}
+ new_level->m_shard_cnt = m_shard_cnt;
return new_level;
}