Dmytro Shamenko
03/03/2026, 10:31 PM- Required property [airbyte.secret.persistence] not present
* [GoogleSecretManagerPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [NoOpSecretPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [VaultSecretPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [AzureKeyVaultPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
Path Taken:
new @j.i.Singleton i.a.c.j.DefinitionsUpdater(ApplyDefinitionsHelper applyDefinitionsHelper, AirbyteEdition airbyteEdition, MetricClient metricClient)
\---> new @j.i.Singleton i.a.c.j.DefinitionsUpdater([ApplyDefinitionsHelper applyDefinitionsHelper], AirbyteEdition airbyteEdition, MetricClient metricClient)
\---> new @j.i.Singleton i.a.c.i.ApplyDefinitionsHelper(@Named("seedDefinitionsProvider") DefinitionsProvider definitionsProvider, SeedDefinitionsProviderType seedProviderType, JobPersistence jobPersistence, ActorDefinitionService actorDefinitionService, SourceService sourceService, DestinationService destinationService, MetricClient metricClient, [SupportStateUpdater supportStateUpdater], ActorDefinitionVersionResolver actorDefinitionVersionResolver, AirbyteCompatibleConnectorsValidator airbyteCompatibleConnectorsValidator, ConnectorRolloutService connectorRolloutService)
\---> new @j.i.Singleton i.a.c.i.SupportStateUpdater(ActorDefinitionService actorDefinitionService, SourceService sourceService, DestinationService destinationService, AirbyteEdition airbyteEdition, [BreakingChangesHelper breakingChangesHelper], BreakingChangeNotificationHelper breakingChangeNotificationHelper, FeatureFlagClient featureFlagClient)
\---> new @j.i.Singleton i.a.c.p.BreakingChangesHelper(ScopedConfigurationService scopedConfigurationService, [WorkspaceService workspaceService], DestinationService destinationService, SourceService sourceService)
\---> new @j.i.Singleton i.a.d.s.i.j.WorkspaceServiceJooqImpl(@Named("configDatabase") Database database, FeatureFlagClient featureFlagClient, SecretsRepositoryReader secretsRepositoryReader, [SecretsRepositoryWriter secretsRepositoryWriter], SecretPersistenceConfigService secretPersistenceConfigService, MetricClient metricClient)
at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2139)
at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1352)
at io.airbyte.data.services.impls.jooq.$WorkspaceServiceJooqImpl$Definition.instantiate(Unknown Source)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2335)
at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3146)
at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2996)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2758)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1779)
at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2122)
at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1352)
at io.airbyte.config.persistence.$BreakingChangesHelper$Definition.instantiate(Unknown Source)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2335)
at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3146)
at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2996)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2758)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1779)
at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2122)
at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1352)
at io.airbyte.config.init.$SupportStateUpdater$Definition.instantiate(Unknown Source)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2335)
at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3146)
at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2996)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2758)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1779)
at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2122)
at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1352)
at io.airbyte.config.init.$ApplyDefinitionsHelper$Definition.instantiate(Unknown Source)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2335)
at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3146)
at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2996)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2758)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1779)
at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2122)
at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1352)
at io.airbyte.cron.jobs.$DefinitionsUpdater$Definition.instantiate(Unknown Source)
at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2335)
at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3146)
at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2996)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2758)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1779)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:855)
at io.micronaut.scheduling.processor.ScheduledMethodProcessor.lambda$scheduleTask$2(ScheduledMethodProcessor.java:152)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: io.micronaut.context.exceptions.NoSuchBeanException: No bean of type [io.airbyte.config.secrets.SecretsRepositoryWriter] exists.
* [SecretsRepositoryWriter] is disabled because:
- No bean of type [io.airbyte.config.secrets.persistence.SecretPersistence] present within context
* [$LocalTestingSecretPersistence$Definition$Intercepted] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [AwsSecretManagerPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [GoogleSecretManagerPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [NoOpSecretPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [VaultSecretPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
* [AzureKeyVaultPersistence[] a candidate of [SecretPersistence] is disabled because:
- Required property [airbyte.secret.persistence] not present
at io.micronaut.context.DefaultBeanContext.newNoSuchBeanException(DefaultBeanContext.java:2800)
at io.micronaut.context.DefaultApplicationContext.newNoSuchBeanException(DefaultApplicationContext.java:338)
at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2763)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1779)
at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2122)
... 56 common frames omitted
2026-03-03 22:28:48,373 [scheduled-executor-thread-2] INFO i.a.c.j.WorkloadMonitor(cancelNotStartedWorkloads):66 - Checking for not started workloads.
2026-03-03 22:28:48,373 [scheduled-executor-thread-1] INFO i.a.c.j.WorkloadMonitor(cancelRunningForTooLongNonSyncWorkloads):144 - Checking for workloads running for too long with timeout value PT4H
2026-03-03 22:28:48,379 [scheduled-executor-thread-1] INFO i.a.c.j.WorkloadMonitor(cancelNotHeartbeatingWorkloads):117 - Checking for non heartbeating workloads.
2026-03-03 22:28:48,382 [scheduled-executor-thread-1] INFO i.a.c.j.WorkloadMonitor(cancelRunningForTooLongSyncWorkloads):164 - Checking for sync workloads running for too long with timeout value PT720H
where we enabled global.secretsManager enabled and type AWS_SECRET_MANAGER @kapa.ai?kapa.ai
03/03/2026, 10:31 PMairbyte.secret.persistence property or this exact cron error, so I can only answer partially.
From the stack trace, Micronaut is trying to create a SecretPersistence bean for cron, but all implementations (AWS, GCP, Vault, NoOp, etc.) are disabled because the required property airbyte.secret.persistence is not set. As a result, SecretsRepositoryWriter cannot be created, and anything depending on it (like WorkspaceServiceJooqImpl → BreakingChangesHelper → SupportStateUpdater → DefinitionsUpdater) fails, which breaks the cron job.
The docs only describe how Airbyte conceptually uses a “secret persistence layer” (where secrets are stored and obfuscated), but they don’t document the concrete configuration key airbyte.secret.persistence or how it’s wired to global.secretsManager in Helm. [Secrets]
Given that:
• Enabling global.secretsManager.enabled=true and type=AWS_SECRET_MANAGER configures a secret manager, but
• The cron logs show that Micronaut still doesn’t see any SecretPersistence bean because airbyte.secret.persistence is missing,
the most likely cause is that the Helm values you set for global.secretsManager are not being translated into the airbyte.secret.persistence Micronaut property for the cron pod’s environment.
However, the provided knowledge sources do not show:
• What exact values airbyte.secret.persistence accepts,
• How global.secretsManager maps to that property in the current chart,
• Or any example of fixing this specific cron failure.
So, based on the available docs, I cannot give a definitive, version‑accurate fix. The error is clearly due to airbyte.secret.persistence not being set in cron’s environment, but how to set it correctly with global.secretsManager is not documented in the sources you provided.
To move forward, you’ll need to:
1. Inspect the cron pod’s environment (kubectl describe pod / kubectl exec env) and confirm that no airbyte.secret.persistence (or equivalent) variable is present.
2. Check your chart version’s documentation or templates to see how global.secretsManager is supposed to map to Micronaut properties for each service (server, worker, cron).
3. Ensure that the same secret‑persistence configuration that works for `server`/`worker` is also applied to cron (via cron.extraEnv or the chart’s built‑in wiring). [Values.yaml]
Because the mapping from global.secretsManager to airbyte.secret.persistence is not described in the knowledge sources, I can’t provide the exact value or YAML snippet with confidence. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Dmytro Shamenko
03/03/2026, 10:34 PMkapa.ai
03/03/2026, 10:34 PMextraEnv for core things like secret persistence; they’re supposed to be driven from global.secretsManager in values.yaml. [Chart V2 upgrade]
However, the error you’re seeing is very specific:
> all SecretPersistence candidates are disabled because
> Required property [airbyte.secret.persistence] not present
That means: in the cron container’s Micronaut context, the property that selects the secret persistence implementation is not set at all, so no SecretPersistence bean is created and SecretsRepositoryWriter can’t be wired.
From the docs we know:
• Secret persistence is configured conceptually via SECRET_PERSISTENCE (e.g. AWS_SECRET_MANAGER, GOOGLE_SECRET_MANAGER, VAULT, etc.). [Configuring Airbyte]
• In Helm chart V2, that maps to global.secretsManager.type in values.yaml. [Env → V2 mapping]
• For AWS, the recommended V2 config looks like:
global:
secretsManager:
enabled: false
type: "" # one of: VAULT, GOOGLE_SECRET_MANAGER, AWS_SECRET_MANAGER, AZURE_KEY_VAULT, TESTING_CONFIG_DB_TABLE
secretName: "airbyte-config-secrets"
awsSecretManager:
region: <aws-region>
authenticationType: credentials
tags: []
kms: ""
You’d set enabled: true and type: AWS_SECRET_MANAGER. [Secrets values; Chart V2 secrets block]
What the docs do not show is the internal Micronaut property name airbyte.secret.persistence or how exactly global.secretsManager.type is translated into that property for each service (server, worker, cron). There is no explicit statement that cron automatically receives the same secret‑persistence config as the other services, and there is no example of this specific cron failure in the provided sources.
So, based on the docs alone:
1. You are correct that, in principle, you shouldn’t need cron.extraEnv for this on Helm V2.
2. The error proves that, in your deployment, the cron pod is not getting the secret‑persistence property, even though global.secretsManager.enabled and type: AWS_SECRET_MANAGER are set.
3. The knowledge sources do not explain why that mismatch can happen or how to fix it specifically for cron.
Given these limitations, the only confident, doc‑based guidance is:
• Double‑check that your values.yaml matches the documented V2 pattern for secrets (including enabled: true, type: AWS_SECRET_MANAGER, and the awsSecretManager block). [Secrets values; Chart V2 secrets block]
• Verify that you’re on the chart version whose docs you’re following (Core vs Enterprise, 2.0 vs “latest”).
• Inspect the cron pod’s environment (kubectl describe pod / env) to confirm that the secret‑persistence‑related variables are actually present there; if they’re missing only for cron, that indicates a chart/wiring issue that is not covered in the docs.
Because the mapping from global.secretsManager to the internal airbyte.secret.persistence property for the cron service is not documented in the provided sources, I can’t say more precisely why cron is missing it, nor can I recommend a specific extraEnv workaround with confidence. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.