Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Steps for container closure:
- SCM allocates blocks to client for write
- Client perform write to blocks at DN pipeline
- DN when identify container is about to full (default 90% of 5GB container size)
- Then DN send notification to SCM for close
- SCM move state from Open to closing and send notification to DN to close
- At DN on success close, notify SCM for closure
During Step 5, If client still writing to DN for blocks allocated before SCM receive close, those write will be rejected when DN close container.
This causes retry for client to allocate new block and retry write.
As solution,
- SCM will move state to closing, so that it will not allocate new blocks to client
- SCM will wait for a configured time before sending to DN close (as a buffer time), where Client can perform write.
This buffer time is configurable and initially set as "2.5 minutes" which is 5 times DN notification interval (i.e. 30 sec * 5).
Problem not intended to solve:
- over subscription and container size - This is best approach to complete the write from client within configured time. Container size can cross the 5GB default limit, which does not much impact to system.
- Slow client writer - If client is writing slowly, it may cross buffer time and can fail. This solution will provide optimal time as configured and will not handle slow client writer.
Attachments
Issue Links
- fixes
-
HDDS-1336 Better block allocation policy in SCM
- Resolved
- is related to
-
HDDS-8632 OrderedAsync: Failed to send request, Container in CLOSED state
- Open
- relates to
-
HDDS-8458 Intermittent timeout in TestBlockDeletion#testBlockDeletion
- Resolved
-
HDDS-7519 Reserve Space for Allocated Blocks
- Open
- links to