Skip to content

sui-rpc: answer duplicate executions from the ledger#287

Merged
bmwill merged 1 commit into
masterfrom
better-execution
Jul 16, 2026
Merged

sui-rpc: answer duplicate executions from the ledger#287
bmwill merged 1 commit into
masterfrom
better-execution

Conversation

@bmwill

@bmwill bmwill commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Previously, execute_transaction_and_wait_for_checkpoint only consulted the ledger after the execution RPC returned successfully. A resubmission of an already committed transaction had to wait out (or hang on) the execution call, and an execution error was surfaced even when the transaction had actually committed, so callers saw a failure for a transaction that succeeded.

With this commit the method also probes GetTransaction while the execution RPC is in flight and returns immediately when the probe finds the transaction in a checkpoint. When execution fails, the ledger is consulted once more before the error is surfaced, and a committed transaction is returned as success. Responses answered from the ledger are assembled with the request's read mask plus the digest, checkpoint, and timestamp fields the method always populates. Also add mock-server tests for the probe short-circuit and both execution-error outcomes.

Previously, execute_transaction_and_wait_for_checkpoint only consulted
the ledger after the execution RPC returned successfully. A
resubmission of an already committed transaction had to wait out (or
hang on) the execution call, and an execution error was surfaced even
when the transaction had actually committed, so callers saw a failure
for a transaction that succeeded.

With this commit the method also probes GetTransaction while the
execution RPC is in flight and returns immediately when the probe finds
the transaction in a checkpoint. When execution fails, the ledger is
consulted once more before the error is surfaced, and a committed
transaction is returned as success. Responses answered from the ledger
are assembled with the request's read mask plus the digest, checkpoint,
and timestamp fields the method always populates. Also add mock-server
tests for the probe short-circuit and both execution-error outcomes.
@bmwill
bmwill merged commit d864344 into master Jul 16, 2026
10 of 12 checks passed
@bmwill
bmwill deleted the better-execution branch July 16, 2026 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant