Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Operation Retry #221

Closed
peterbroadhurst opened this issue Oct 1, 2021 · 2 comments
Closed

Operation Retry #221

peterbroadhurst opened this issue Oct 1, 2021 · 2 comments
Milestone

Comments

@peterbroadhurst
Copy link
Contributor

The design of FireFly prioirtizes idempotent "at least once" semantics wherever possible, fitting with the modern approaches taken in the underlying technologies it integrates - like blockchain, REST, Kafka, IPFS etc.

We define an "operation" in the database every time an action is instigated by a node in the network.
These objects do not propagate - they are that member's local record of the part of the overall "transaction" they submitted.

Multiple operations roll up into different types of "transaction", and coordinating these actions and events into a programming model is a core function of FireFly (per the "ping pong" diagram #5)

Some examples:

  • Broadcast requires an IPFS operation, and a Blockchain (eth/fabric) operation
  • Private pinned send requires a set of DX operations to each member, and a Blockchain operation
  • Token pool creation is the first higher level transaction, orchestrating:
    • A token operation to create, or find details about, a token on the chain
    • A broadcast transaction, to broadcast that data to the whole network

The reason these operations are stored in the database, is so that if they fail, they can be retried.
Each connector should have a level of retry built in, but it is impractical to retry forever. Sometimes failures require.

The retry API/UI mechanisms have not been implemented (you can just query today), and there are some considerations coming out that need to be factored in when it is.

This issue should be used for the architectural discussion on how operations evolve into safely retryable item, as started in some previous PRs - notably #211 (comment)

Also this item on sophisticated requirements for policy-driven retry in public chain scenarios:
hyperledger/firefly-ethconnect#149 (comment)

@peterbroadhurst
Copy link
Contributor Author

Note should be merged with #400

@awrichar
Copy link
Contributor

Duplicate of #400

@awrichar awrichar marked this as a duplicate of #400 Mar 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants