Closed blasscoc closed 3 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.
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