diff options
author | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-09-24 14:43:45 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@verizonmedia.com> | 2019-09-27 09:10:32 +0000 |
commit | 7295ea63246d69dc0b4c434c6f1773b8b5f8b5c4 (patch) | |
tree | 4e1a8b6d17370a01da1d651f3a1473abbf8c8d59 /storage/src | |
parent | 1692827e9aadba4581a9b56cdb691a2990080318 (diff) |
Add memory load-fences that match existing corresponding store-fences
Diffstat (limited to 'storage/src')
-rw-r--r-- | storage/src/vespa/storage/bucketdb/btree_bucket_database.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/storage/src/vespa/storage/bucketdb/btree_bucket_database.cpp b/storage/src/vespa/storage/bucketdb/btree_bucket_database.cpp index c3ade3c2877..66d44a655e0 100644 --- a/storage/src/vespa/storage/bucketdb/btree_bucket_database.cpp +++ b/storage/src/vespa/storage/bucketdb/btree_bucket_database.cpp @@ -148,7 +148,9 @@ Entry BTreeBucketDatabase::entry_from_iterator(const BTree::ConstIterator& iter) if (!iter.valid()) { return Entry::createInvalid(); } - return entry_from_value(iter.getKey(), iter.getData()); + const auto value = iter.getData(); + std::atomic_thread_fence(std::memory_order_acquire); + return entry_from_value(iter.getKey(), value); } ConstEntryRef BTreeBucketDatabase::const_entry_ref_from_iterator(const BTree::ConstIterator& iter) const { @@ -156,6 +158,7 @@ ConstEntryRef BTreeBucketDatabase::const_entry_ref_from_iterator(const BTree::Co return ConstEntryRef::createInvalid(); } const auto value = iter.getData(); + std::atomic_thread_fence(std::memory_order_acquire); const auto replicas_ref = _store.get(entry_ref_from_value(value)); const auto bucket = BucketId(BucketId::keyToBucketId(iter.getKey())); return const_entry_ref_from_replica_array_ref(bucket, gc_timestamp_from_value(value), replicas_ref); |