Skip to content

Commit 7d953f9

Browse files
Check object version on deletion
1 parent fd4bd0e commit 7d953f9

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

lib/remote/apilistener-configsync.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,19 @@ Value ApiListener::ConfigDeleteObjectAPIHandler(const MessageOrigin::Ptr& origin
274274

275275
ConfigObject::Ptr object = ctype->GetObject(objName);
276276

277+
// Check if the deletion is for an older object version
278+
double objVersion = params->Get("version");
279+
if (object && objVersion < object->GetVersion()) {
280+
Log(LogNotice, "ApiListener")
281+
<< "Discarding 'config delete object' message"
282+
<< " from '" << identity << "' (endpoint: '" << endpoint->GetName() << "', zone: '" << endpointZone->GetName() << "')"
283+
<< " for object '" << object->GetName()
284+
<< "': Object version " << std::fixed << object->GetVersion()
285+
<< " is more recent than the deleted version " << std::fixed << objVersion << ".";
286+
287+
return Empty;
288+
}
289+
277290
if (!object) {
278291
Log(LogNotice, "ApiListener")
279292
<< "Could not delete non-existent object '" << objName << "' with type '" << params->Get("type") << "'.";

0 commit comments

Comments
 (0)