If smb workload comprises of multiple clients trying to access the same file, then it gives rise to record contention on locking.tdb. As a result the record size can become quite large in the database. When multiple clients send (call) requests to CTDB to migrate the same record, CTDB queues up the migration requests and keeps a single call request in flight. All the other call requests get queued and deferred waiting for the migration of the record to complete. Once the record is migrated to the local node, all the deferred call requests are processed again. During the initial processing of a call request, CTDB fetches the record to check the header. If the call request gets deferred, then the fetched record data is not freed. For a contended record this can result in memory usage in GB. The fix is to free up the record data if a call request gets deferred.
Created attachment 13602 [details] Patches for v4-6
Created attachment 13603 [details] Patches for v4-7
Hi Karolin, This is ready for 4.6 and 4.7. Thanks...
Pushed to v4-{6,7}-test