Add payload field to Init message in object.PUT RPC #9

Closed
opened 2023-02-20 13:01:52 +00:00 by fyrchik · 4 comments
fyrchik commented 2023-02-20 13:01:52 +00:00 (Migrated from github.com)

For small objects we could send payload + header in one message.

Also, think about one-shot (non-stream) RPC for vNext.

For small objects we could send payload + header in one message. Also, think about one-shot (non-stream) RPC for vNext.
realloc added this to the v2.15 - Karpinsky Ice Cap milestone 2023-03-23 13:25:38 +00:00
Owner

I don't think possible performance gains justify complicating the current streaming interface.

How about having a separate RPC for putting prepared objects?

The compatibility will be preserved, but in some cases (replication, splitting objects on a client) we might want to just send a single message. If we extend the current interface, feels like half-measure. With a separate one we can read and object and "just replicate". This also plays nicely with recent SDK improvements: forming and object and then splitting it again to send feels like a kludge.

cc @alexvanin @realloc

I don't think possible performance gains justify complicating the current streaming interface. How about having a separate RPC for putting prepared objects? The compatibility will be preserved, but in some cases (replication, splitting objects on a client) we might want to just send a single message. If we extend the current interface, feels like half-measure. With a separate one we can read and object and "just replicate". This also plays nicely with recent SDK improvements: forming and object and then splitting it again to send feels like a kludge. cc @alexvanin @realloc
Owner

The compatibility will be preserved, but in some cases (replication, splitting objects on a client) we might want to just send a single message.

Single message is not a single object. If API introduces new unary RPC request, then it is going to be suitable only for objects with the size of 3-4 MiB to fit in the gRPC message.

While FrostFS has plenty of such small objects (tombstones, secret boxes, small user objects in general), client side should decide which RPC to use based on the object size. I am okay with that as soon as it is hidden in the client implementation, but separate RPC might be a bit confusing for SDK developers.

> The compatibility will be preserved, but in some cases (replication, splitting objects on a client) we might want to just send a single message. Single message is not a single object. If API introduces new unary RPC request, then it is going to be suitable only for objects with the size of 3-4 MiB to fit in the gRPC message. While FrostFS has plenty of such small objects (tombstones, secret boxes, small user objects in general), client side should decide which RPC to use based on the object size. I am okay with that as soon as it is hidden in the client implementation, but separate RPC might be a bit confusing for SDK developers.
realloc added the
discussion
P1
labels 2023-06-28 08:46:17 +00:00
Owner

We can increase gRPC message size.
This is not a part of the FrostFS API, but we can always failback to the old PUT implementation.

We can increase gRPC message size. This is not a part of the FrostFS API, but we can always failback to the old PUT implementation.
dstepanov-yadro was assigned by fyrchik 2023-06-28 12:50:18 +00:00

PutSingle implemented

`PutSingle` implemented
Sign in to join this conversation.
No project
No assignees
4 participants
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-api#9
No description provided.