TGSAI / mdio-cpp

C++, Cloud native, scalable storage engine for various types of energy data.
Apache License 2.0
6 stars 3 forks source link

TODO - Variable.h #46

Closed blasscoc closed 3 months ago

blasscoc commented 4 months ago

void _dataset_only_callback_committed() { // We only want to update the address if the UserAttributes object has // changed location This indicates a new UserAttributes object has taken the // place of the existing one. if (attributes.get() != nullptr && attributes->get() != nullptr) { std::uintptr_t newAddress = reinterpret_cast(&(**attributes)); // TODO(BrianMichell): Leaving this as active is causing segfaults. // The features requiring it are low priority. // attributesAddress = newAddress; } // It is fine that this will only change in the "collection" instance of the // Variable, because that is the only one that will be operated on by the // Dataset commit

BrianMichell commented 4 months ago

Enabling this feature is expected to reduce the amount of .zattrs files that require update on mutable metadata changes.

The current state is 100% functional but sub-optimal because it will rewrite every .zattrs file, regardless of change status.

Re-enabling this feature encounters a race condition when the code is compiled with clang (in my testing). I have attempted to address this before but was unable to come up with an explanation.

In order to fully re-enable this feature we will also need to update mdio::Dataset.CommitMetadata(), mdio::Utils::TrimDataset() and mdio::Variable::PublishMetadata() methods.