mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 09:36:44 +00:00
feat: Add config option for external secret update interval (#7995)
## Summary
Adds `N8N_EXTERNAL_SECRETS_UPDATE_INTERVAL` to allow enterprise users to
tweak the update internal for importing new secrets.
If using a config file the value is:
```
"externalSecrets": {
"updateInterval": 300
}
```
#### How to test the change:
1. Run as normal and check that the secret is updated every 5 minutes
2. Set `N8N_EXTERNAL_SECRETS_UPDATE_INTERVAL` to 10
3. Check the secret is reloaded after 10 seconds
## Review / Merge checklist
- [x] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [x] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
This commit is contained in:
@@ -11,13 +11,10 @@ import Container, { Service } from 'typedi';
|
|||||||
import { Logger } from '@/Logger';
|
import { Logger } from '@/Logger';
|
||||||
|
|
||||||
import { jsonParse, type IDataObject, ApplicationError } from 'n8n-workflow';
|
import { jsonParse, type IDataObject, ApplicationError } from 'n8n-workflow';
|
||||||
import {
|
import { EXTERNAL_SECRETS_INITIAL_BACKOFF, EXTERNAL_SECRETS_MAX_BACKOFF } from './constants';
|
||||||
EXTERNAL_SECRETS_INITIAL_BACKOFF,
|
|
||||||
EXTERNAL_SECRETS_MAX_BACKOFF,
|
|
||||||
EXTERNAL_SECRETS_UPDATE_INTERVAL,
|
|
||||||
} from './constants';
|
|
||||||
import { License } from '@/License';
|
import { License } from '@/License';
|
||||||
import { InternalHooks } from '@/InternalHooks';
|
import { InternalHooks } from '@/InternalHooks';
|
||||||
|
import { updateIntervalTime } from './externalSecretsHelper.ee';
|
||||||
import { ExternalSecretsProviders } from './ExternalSecretsProviders.ee';
|
import { ExternalSecretsProviders } from './ExternalSecretsProviders.ee';
|
||||||
import { SingleMainSetup } from '@/services/orchestration/main/SingleMainSetup';
|
import { SingleMainSetup } from '@/services/orchestration/main/SingleMainSetup';
|
||||||
|
|
||||||
@@ -51,10 +48,7 @@ export class ExternalSecretsManager {
|
|||||||
this.initialized = true;
|
this.initialized = true;
|
||||||
resolve();
|
resolve();
|
||||||
this.initializingPromise = undefined;
|
this.initializingPromise = undefined;
|
||||||
this.updateInterval = setInterval(
|
this.updateInterval = setInterval(async () => this.updateSecrets(), updateIntervalTime());
|
||||||
async () => this.updateSecrets(),
|
|
||||||
EXTERNAL_SECRETS_UPDATE_INTERVAL,
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return this.initializingPromise;
|
return this.initializingPromise;
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
export const EXTERNAL_SECRETS_DB_KEY = 'feature.externalSecrets';
|
export const EXTERNAL_SECRETS_DB_KEY = 'feature.externalSecrets';
|
||||||
export const EXTERNAL_SECRETS_UPDATE_INTERVAL = 5 * 60 * 1000;
|
|
||||||
export const EXTERNAL_SECRETS_INITIAL_BACKOFF = 10 * 1000;
|
export const EXTERNAL_SECRETS_INITIAL_BACKOFF = 10 * 1000;
|
||||||
export const EXTERNAL_SECRETS_MAX_BACKOFF = 5 * 60 * 1000;
|
export const EXTERNAL_SECRETS_MAX_BACKOFF = 5 * 60 * 1000;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
import { License } from '@/License';
|
import { License } from '@/License';
|
||||||
|
import config from '@/config';
|
||||||
import Container from 'typedi';
|
import Container from 'typedi';
|
||||||
|
|
||||||
|
export const updateIntervalTime = () => config.getEnv('externalSecrets.updateInterval') * 1000;
|
||||||
|
|
||||||
export function isExternalSecretsEnabled() {
|
export function isExternalSecretsEnabled() {
|
||||||
const license = Container.get(License);
|
const license = Container.get(License);
|
||||||
return license.isExternalSecretsEnabled();
|
return license.isExternalSecretsEnabled();
|
||||||
|
|||||||
@@ -1007,6 +1007,15 @@ export const schema = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
externalSecrets: {
|
||||||
|
updateInterval: {
|
||||||
|
format: Number,
|
||||||
|
default: 300,
|
||||||
|
env: 'N8N_EXTERNAL_SECRETS_UPDATE_INTERVAL',
|
||||||
|
doc: 'How often (in seconds) to check for secret updates.',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
deployment: {
|
deployment: {
|
||||||
type: {
|
type: {
|
||||||
format: String,
|
format: String,
|
||||||
|
|||||||
Reference in New Issue
Block a user