Skip to content

CAMEL-23255: Retry Infinispan schema registration on IllegalLifecycleStateException#22278

Open
gnodet wants to merge 2 commits intomainfrom
CAMEL-23255-infinispan-schema-retry
Open

CAMEL-23255: Retry Infinispan schema registration on IllegalLifecycleStateException#22278
gnodet wants to merge 2 commits intomainfrom
CAMEL-23255-infinispan-schema-retry

Conversation

@gnodet
Copy link
Contributor

@gnodet gnodet commented Mar 26, 2026

Summary

When Camel and a remote Infinispan server start concurrently (e.g., in Kubernetes), the server's internal ___protobuf_metadata cache may not be ready yet, causing embedding store schema registration to fail immediately with RemoteIllegalLifecycleStateException.

This PR adds retry logic around the schema registration call in InfinispanRemoteManager.doStart():

  • Uses Camel's ForegroundTask with an IterationTimeBoundedBudget (1s interval, configurable max duration)
  • Adds a new embeddingStoreSchemaRegistrationTimeout configuration property (Duration, default 60s) so users can tune the timeout
  • Only RemoteIllegalLifecycleStateException triggers retries — other errors (bad credentials, invalid schema, network issues) fail immediately without waiting

Test plan

  • Verify existing Infinispan integration tests pass
  • Verify schema registration succeeds when server starts concurrently
  • Verify non-lifecycle errors (e.g., auth failure) still fail immediately

Claude Code on behalf of Guillaume Nodet

When Camel and a remote Infinispan server start concurrently (e.g., in
Kubernetes), the server's internal ___protobuf_metadata cache may not
be ready yet, causing schema registration to fail with
RemoteIllegalLifecycleStateException.

Add retry logic using Camel's ForegroundTask with a configurable
timeout (embeddingStoreSchemaRegistrationTimeout, default 60s). Only
RemoteIllegalLifecycleStateException triggers retries; other errors
(bad credentials, invalid schema, network issues) fail immediately.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gnodet gnodet requested review from Croway and oscerd March 26, 2026 10:06
@github-actions
Copy link
Contributor

🌟 Thank you for your contribution to the Apache Camel project! 🌟
🤖 CI automation will test this PR automatically.

🐫 Apache Camel Committers, please review the following items:

  • First-time contributors require MANUAL approval for the GitHub Actions to run
  • You can use the command /component-test (camel-)component-name1 (camel-)component-name2.. to request a test from the test bot although they are normally detected and executed by CI.
  • You can label PRs using build-all, build-dependents, skip-tests and test-dependents to fine-tune the checks executed by this PR.
  • Build and test logs are available in the summary page. Only Apache Camel committers have access to the summary.

⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@gnodet gnodet force-pushed the CAMEL-23255-infinispan-schema-retry branch from 13b0b83 to 16363e5 Compare March 26, 2026 11:02
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gnodet gnodet force-pushed the CAMEL-23255-infinispan-schema-retry branch from 16363e5 to b76ed37 Compare March 26, 2026 11:20
@github-actions
Copy link
Contributor

github-actions bot commented Mar 26, 2026

🧪 CI tested the following changed modules:

  • catalog/camel-catalog
  • components/camel-infinispan/camel-infinispan
  • dsl/camel-componentdsl
  • dsl/camel-endpointdsl
All tested modules (76 modules)
  • Camel :: AI :: LangChain4j :: Embedding
  • Camel :: AI :: LangChain4j :: Embedding [jar]
  • Camel :: AI :: LangChain4j :: EmbeddingStore
  • Camel :: AI :: LangChain4j :: EmbeddingStore [jar]
  • Camel :: All Components Sync point
  • Camel :: All Components Sync point [pom]
  • Camel :: Assembly
  • Camel :: Assembly [pom]
  • Camel :: Catalog :: CSimple Maven Plugin (deprecated) [maven-plugin]
  • Camel :: Catalog :: CSimple Maven Plugin (deprecated) SUCCESS [ 1.791 s]
  • Camel :: Catalog :: Camel Catalog
  • Camel :: Catalog :: Camel Catalog [jar]
  • Camel :: Catalog :: Camel Report Maven Plugin
  • Camel :: Catalog :: Camel Report Maven Plugin [maven-plugin]
  • Camel :: Catalog :: Camel Route Parser
  • Camel :: Catalog :: Camel Route Parser [jar]
  • Camel :: Catalog :: Console
  • Camel :: Catalog :: Console [jar]
  • Camel :: Catalog :: Dummy Component
  • Camel :: Catalog :: Dummy Component [jar]
  • Camel :: Catalog :: Lucene (deprecated)
  • Camel :: Catalog :: Lucene (deprecated) [jar]
  • Camel :: Catalog :: Maven
  • Camel :: Catalog :: Maven [jar]
  • Camel :: Catalog :: Suggest
  • Camel :: Catalog :: Suggest [jar]
  • Camel :: Component DSL
  • Camel :: Component DSL [jar]
  • Camel :: Coverage
  • Camel :: Coverage [pom]
  • Camel :: Docs
  • Camel :: Docs [pom]
  • Camel :: Endpoint DSL
  • Camel :: Endpoint DSL [jar]
  • Camel :: Endpoint DSL :: Support
  • Camel :: Endpoint DSL :: Support [jar]
  • Camel :: Infinispan :: Remote
  • Camel :: Infinispan :: Remote [jar]
  • Camel :: Integration Tests
  • Camel :: Integration Tests [jar]
  • Camel :: JBang :: Core
  • Camel :: JBang :: Core [jar]
  • Camel :: JBang :: Integration tests
  • Camel :: JBang :: Integration tests [jar]
  • Camel :: JBang :: MCP
  • Camel :: JBang :: MCP [jar]
  • Camel :: JBang :: Main
  • Camel :: JBang :: Main [jar]
  • Camel :: JBang :: Plugin :: Edit
  • Camel :: JBang :: Plugin :: Edit [jar]
  • Camel :: JBang :: Plugin :: Generate
  • Camel :: JBang :: Plugin :: Generate [jar]
  • Camel :: JBang :: Plugin :: Kubernetes
  • Camel :: JBang :: Plugin :: Kubernetes [jar]
  • Camel :: JBang :: Plugin :: Route Parser
  • Camel :: JBang :: Plugin :: Route Parser [jar]
  • Camel :: JBang :: Plugin :: Testing
  • Camel :: JBang :: Plugin :: Testing [jar]
  • Camel :: JBang :: Plugin :: Validate
  • Camel :: JBang :: Plugin :: Validate [jar]
  • Camel :: Kamelet Main
  • Camel :: Kamelet Main [jar]
  • Camel :: Launcher
  • Camel :: Launcher [jar]
  • Camel :: Launcher :: Container
  • Camel :: Launcher :: Container [pom]
  • Camel :: YAML DSL
  • Camel :: YAML DSL [jar]
  • Camel :: YAML DSL :: Deserializers
  • Camel :: YAML DSL :: Deserializers [jar]
  • Camel :: YAML DSL :: Maven Plugins
  • Camel :: YAML DSL :: Maven Plugins [maven-plugin]
  • Camel :: YAML DSL :: Validator
  • Camel :: YAML DSL :: Validator [jar]
  • Camel :: YAML DSL :: Validator Maven Plugin
  • Camel :: YAML DSL :: Validator Maven Plugin [maven-plugin]

apupier
apupier approved these changes Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants