In code, in preExecute, we don't read from DB/cache. As isLeader() can have stale information. As right now, this updates for every 1 second.
When isLeader() is fixed to be always true. We can allocateBlocks for multipart Key when openKey is called in OM.
To know why isLeader can have stale info. Read this comment from [~anu]