Support object splitting in the pool #114

Closed
opened 2023-07-10 13:11:16 +00:00 by alexvanin · 0 comments
Owner

Pool's object put method process streaming data: pool pipes the stream into storage node. While this makes pool component lightweight, pool can't use retries and produce bigger network load.

As an alternative, pool can split and prepare object on the client side, buffer it and send back to the node. In this case pool can retry request or choose more suitable node to send the request.

Describe the solution you'd like

Provide new method in object pool interface to upload objects. The signature should be similar to a existing method, so the client's won't need to adapt code to it.

Implementation should split and prepare object before sending the request. To do that it should allocate a memory for max object payload in the network.

Note! Pool should control amount of memory it allocates. It should have hard limit of some sort and consider blocking / non-blocking modes for object put invocations.

Describe alternatives you've considered

Organize object split on the client side and provide interface to upload split objects. This code is going to be boilerplate so it is more appropriate to define it in the pool.

Additional context

## Is your feature request related to a problem? Please describe. Pool's object put method process streaming data: pool pipes the stream into storage node. While this makes pool component lightweight, pool can't use retries and produce bigger network load. As an alternative, pool can split and prepare object on the client side, buffer it and send back to the node. In this case pool can retry request or choose more suitable node to send the request. ## Describe the solution you'd like Provide new method in object pool interface to upload objects. The signature should be similar to a existing method, so the client's won't need to adapt code to it. Implementation should split and prepare object before sending the request. To do that it should allocate a memory for max object payload in the network. **Note!** Pool should control amount of memory it allocates. It should have hard limit of some sort and consider blocking / non-blocking modes for object put invocations. ## Describe alternatives you've considered Organize object split on the client side and provide interface to upload split objects. This code is going to be boilerplate so it is more appropriate to define it in the pool. ## Additional context <!--- Add any other context or screenshots about the feature request here. -->
alexvanin added the
pool
label 2023-07-10 13:11:16 +00:00
dkirillov was assigned by alexvanin 2023-07-10 13:11:16 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: TrueCloudLab/frostfs-sdk-go#114
No description provided.