Skip to content

Conversation

@muhamadazmy
Copy link
Contributor

@muhamadazmy muhamadazmy commented Nov 13, 2025

[AdminAPI] Use IngestionClient for invocation and state mgmt

  • Use IngestionClient instead of bifrost to write to partitions logs
  • Remove deprecated delete_invocation

Stack created with Sapling. Best reviewed with ReviewStack.

Copy link
Contributor

@tillrohrmann tillrohrmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for creating this PR @muhamadazmy. The changes look good to me :-)

I left a comment about the removal of the "delete an invocation" API. I think it is ok to remove the API since it was deprecated in v1.4.0 but we need to make sure that it's communicated as part of the release. The Admin API version might have to be bumped if older clients could still call the old invocation deletion API.

/// Terminate an invocation
#[openapi(
summary = "Delete an invocation",
deprecated = true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This API was deprecated in 1.4.0. If we remove it with 1.6.0, then we certainly need to add a release note to make people aware. Additionally, we need to check

and
/// Version information endpoint
whether we need to remove support for AdminApiVersion::V2 because we removed the old delete invocation endpoint. We should then also update
pub const MIN_ADMIN_API_VERSION: AdminApiVersion = AdminApiVersion::V2;
accordingly if a bump is needed.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cc @slinkydeveloper for double checking whether we can remove this API.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually discussed this with him before I remove it. I was confused because the was 2 endpoints to delete an invocation. So he confirmed that it's no longer used (same for the UI).

Regarding the version, thank you for pointing this out. I think we should indeed set the MIN_ADMIN_API_VERSION to V3

Comment on lines 255 to 252
warn!("Could not append state patching command to Bifrost: {err}");
MetaApiError::Internal(
"Failed sending state patching command to the cluster.".to_owned(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this always true that the patch command could not be appended to Bifrost? What if the ingress is closing after having sent the command out?

Comment on lines 247 to 248
let result = state
.ingress
.ingest(
partition_key,
IngestRecord::from_parts(envelope.record_keys(), envelope),
)
.await
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about rolling upgrades when there are still a few nodes that don't support the PartitionLeaderService yet?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can release all the changes up to kafka ingestion. Then release admin and shuffle changes in the following release.

@muhamadazmy muhamadazmy force-pushed the pr3980 branch 9 times, most recently from 6dccbcf to e58f21d Compare November 28, 2025 16:34
Copy link
Contributor

@tillrohrmann tillrohrmann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for updating this PR @muhamadazmy. LGTM. +1 for merging :-)


/// Min/max supported admin api versions by the server
pub const MIN_ADMIN_API_VERSION: AdminApiVersion = AdminApiVersion::V2;
pub const MIN_ADMIN_API_VERSION: AdminApiVersion = AdminApiVersion::V3;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a comment why we bumped the min admin version to V3 and in which Restate version this happened.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean that V2 contained the old kill/cancel invocation endpoint and V3 does not? Maybe we can document what was included/changed with AdminApiVersion::V3 for our future selves.

@muhamadazmy muhamadazmy force-pushed the pr3980 branch 10 times, most recently from b26b442 to bbbb04e Compare December 11, 2025 08:43
@muhamadazmy muhamadazmy force-pushed the pr3980 branch 2 times, most recently from 425fe18 to 0880a6a Compare December 17, 2025 11:38
@muhamadazmy muhamadazmy force-pushed the pr3980 branch 6 times, most recently from 715b672 to be1e987 Compare December 19, 2025 10:22
@muhamadazmy muhamadazmy force-pushed the pr3980 branch 2 times, most recently from ee02391 to bd521a9 Compare December 29, 2025 13:02
@muhamadazmy muhamadazmy force-pushed the pr3980 branch 3 times, most recently from accb0d0 to fb4f547 Compare January 6, 2026 09:06
- Use IngestionClient instead of bifrost to write to partitions logs
- Remove deprecated `delete_invocation`
@muhamadazmy muhamadazmy merged commit 6794a87 into restatedev:main Jan 6, 2026
58 checks passed
@muhamadazmy muhamadazmy deleted the pr3980 branch January 6, 2026 10:11
@github-actions github-actions bot locked and limited conversation to collaborators Jan 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants