Decouple actors and rpc invoker in morph #781

Open
opened 2023-11-02 08:01:12 +00:00 by fyrchik · 1 comment
Owner

Morph connection/subscription/reconnection logic is about the invoker: just an RPC endpoint.
Actor is a separate component: how the transactions shoud be signed.

Currently contract-specific clients use morh.Invoke (notary invoke) and signers are determined inside the morph client
I suggest changing this logic:

  1. Morph client handles reconnections and subscriptions.
  2. Determine the list of actors we need (node signs transactions by itself or with committee, same for IR)
  3. Some ActorSource can provide necessary actors, which will be passed as argument to all invocations.

This will help to adopt interface from the generated bindings for contracts.

Morph connection/subscription/reconnection logic is about the invoker: just an RPC endpoint. Actor is a separate component: how the transactions shoud be signed. Currently contract-specific clients use morh.Invoke (notary invoke) and signers are determined inside the morph client I suggest changing this logic: 1. Morph client handles reconnections and subscriptions. 2. Determine the list of actors we need (node signs transactions by itself or with committee, same for IR) 3. Some `ActorSource` can provide necessary actors, which will be passed as argument to all invocations. This will help to adopt interface from the generated bindings for contracts.
fyrchik added the
frostfs-node
refactoring
discussion
labels 2023-11-02 08:01:16 +00:00
fyrchik added this to the v0.38.0 milestone 2023-11-02 08:01:19 +00:00
dstepanov-yadro self-assigned this 2023-11-21 09:50:55 +00:00

Well, auto generated bindings are not good enough.

Example 1:
containersOf returns sessionID and iterator, they should be used with other Actor methods to get results.

Example 2:
container.get returns []stackitem array, that must be parsed.

So there is nothing better IMHO in compare with current client.

Well, auto generated bindings are not good enough. Example 1: `containersOf` returns sessionID and iterator, they should be used with other `Actor` methods to get results. Example 2: `container.get` returns []stackitem array, that must be parsed. So there is nothing better IMHO in compare with current client.
fyrchik was assigned by dstepanov-yadro 2023-11-30 13:58:09 +00:00
dstepanov-yadro removed their assignment 2023-11-30 13:58:10 +00:00
fyrchik modified the milestone from v0.38.0 to v0.39.0 2024-02-12 06:34:19 +00:00
fyrchik modified the milestone from v0.39.0 to v0.40.0 2024-05-14 14:18:54 +00:00
fyrchik modified the milestone from v0.40.0 to v0.41.0 2024-06-01 09:19:46 +00:00
fyrchik modified the milestone from v0.41.0 to v0.42.0 2024-06-14 07:06:40 +00:00
fyrchik modified the milestone from v0.42.0 to v0.43.0 2024-07-23 06:34:43 +00:00
fyrchik modified the milestone from v0.43.0 to v0.44.0 2024-09-30 11:51:35 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 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-node#781
No description provided.