Skip to content

Make Load all operations retryable [CTT-723] - #571

Open
shultseva wants to merge 1 commit into
hazelcast:masterfrom
shultseva:retryable_load_all
Open

Make Load all operations retryable [CTT-723]#571
shultseva wants to merge 1 commit into
hazelcast:masterfrom
shultseva:retryable_load_all

Conversation

@shultseva

@shultseva shultseva commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Load all, Load all subsets are retryable now

Initial PR - https://github.com/hazelcast/hazelcast-mono/pull/4888

@shultseva
shultseva marked this pull request as ready for review August 25, 2026 09:32
@shultseva
shultseva requested review from ahmetmircik and yuce August 25, 2026 10:42
@ahmetmircik

Copy link
Copy Markdown
Member

@shultseva, could you please add a short explanation to the PR description covering why this change is needed?

@ahmetmircik ahmetmircik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, PR description can be improved.

Loads all keys into the store. This is a batch load operation so that an implementation can optimize the multiple loads.
request:
retryable: false
retryable: true

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Do we really need to set retryable to true?

Retries are not idempotent and may trigger duplicate invalidations, WAN updates, interceptor calls, and other side effects.

I see two options:

  • Keep retryable as false and document the recommended workaround.
  • Make the operation idempotent before enabling retries.

WDYT?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, if we want fault tolerance for client-side requests, we need retries.

For a full load, if the load is already in progress, another full load will not be started. If the previous load has already finished, then yes, another one will be triggered. But since it finished between retries, the load should be fast, so I don’t see a problem with triggering it twice.

For a partial load, yes, it can be triggered twice. So what? It will rewrite the same values (or do nothing if replace = false), but I still don’t see a problem with that.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes, the main issue I see is a late retry overwriting a newer value with an older one. Some form of idempotency could prevent this; even a simple ordered UUID might be sufficient.

@ahmetmircik ahmetmircik left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

.

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.

2 participants