From a29e009f350c0c0be15ec1c4436aaf1437575836 Mon Sep 17 00:00:00 2001 From: Michael Street <5597260+MStreet3@users.noreply.github.com> Date: Tue, 17 Mar 2026 15:28:55 +0200 Subject: [PATCH] feat: adds a new feature flag for an OCR queue --- pkg/settings/cresettings/README.md | 3 ++- pkg/settings/cresettings/defaults.json | 3 ++- pkg/settings/cresettings/defaults.toml | 1 + pkg/settings/cresettings/settings.go | 3 +++ pkg/settings/cresettings/settings_test.go | 12 +++++++++++- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/pkg/settings/cresettings/README.md b/pkg/settings/cresettings/README.md index 6ffbcdd5a..856dfd929 100644 --- a/pkg/settings/cresettings/README.md +++ b/pkg/settings/cresettings/README.md @@ -113,8 +113,9 @@ flowchart PerWorkflow.ExecutionResponseLimit{{PerWorkflow.ExecutionResponseLimit}}:::bound PerWorkflow.ExecutionTimestampsEnabled[/PerWorkflow.ExecutionTimestampsEnabled\]:::gate PerWorkflow.FeatureMultiTriggerExecutionIDsActiveAt[/PerWorkflow.FeatureMultiTriggerExecutionIDsActiveAt\]:::gate + PerWorkflow.FeatureOCRQueueEnabled[/PerWorkflow.FeatureOCRQueueEnabled\]:::gate - PerWorkflow.ExecutionTimestampsEnabled-->PerWorkflow.FeatureMultiTriggerExecutionIDsActiveAt-->PerWorkflow.ExecutionTimeout-->PerWorkflow.ExecutionResponseLimit + PerWorkflow.ExecutionTimestampsEnabled-->PerWorkflow.FeatureMultiTriggerExecutionIDsActiveAt-->PerWorkflow.FeatureOCRQueueEnabled-->PerWorkflow.ExecutionTimeout-->PerWorkflow.ExecutionResponseLimit end subgraph ExecutionHelper.GetSecrets diff --git a/pkg/settings/cresettings/defaults.json b/pkg/settings/cresettings/defaults.json index 0d85a96a9..465275cda 100644 --- a/pkg/settings/cresettings/defaults.json +++ b/pkg/settings/cresettings/defaults.json @@ -109,6 +109,7 @@ "Secrets": { "CallLimit": "5" }, - "FeatureMultiTriggerExecutionIDsActiveAt": "2100-01-01 00:00:00 +0000 UTC" + "FeatureMultiTriggerExecutionIDsActiveAt": "2100-01-01 00:00:00 +0000 UTC", + "FeatureOCRQueueEnabled": "false" } } \ No newline at end of file diff --git a/pkg/settings/cresettings/defaults.toml b/pkg/settings/cresettings/defaults.toml index 868b22f0c..f8bee58b6 100644 --- a/pkg/settings/cresettings/defaults.toml +++ b/pkg/settings/cresettings/defaults.toml @@ -51,6 +51,7 @@ WASMSecretsSizeLimit = '1mb' LogLineLimit = '1kb' LogEventLimit = '1000' FeatureMultiTriggerExecutionIDsActiveAt = '2100-01-01 00:00:00 +0000 UTC' +FeatureOCRQueueEnabled = 'false' [PerWorkflow.ChainAllowed] Default = 'false' diff --git a/pkg/settings/cresettings/settings.go b/pkg/settings/cresettings/settings.go index a520e5952..95d6dc68c 100644 --- a/pkg/settings/cresettings/settings.go +++ b/pkg/settings/cresettings/settings.go @@ -205,6 +205,7 @@ var Default = Schema{ }, FeatureMultiTriggerExecutionIDsActiveAt: Time(time.Date(2100, 1, 1, 0, 0, 0, 0, time.UTC)), + FeatureOCRQueueEnabled: Bool(false), }, } @@ -240,6 +241,7 @@ type Schema struct { PerOwner Owners `scope:"owner"` PerWorkflow Workflows `scope:"workflow"` } + type Orgs struct { ZeroBalancePruningTimeout Setting[time.Duration] } @@ -289,6 +291,7 @@ type Workflows struct { Secrets secrets FeatureMultiTriggerExecutionIDsActiveAt Setting[config.Timestamp] + FeatureOCRQueueEnabled Setting[bool] } type cronTrigger struct { diff --git a/pkg/settings/cresettings/settings_test.go b/pkg/settings/cresettings/settings_test.go index e68f72ba2..704bab32d 100644 --- a/pkg/settings/cresettings/settings_test.go +++ b/pkg/settings/cresettings/settings_test.go @@ -115,13 +115,15 @@ func TestSchema_Unmarshal(t *testing.T) { "ChainRead": { "CallLimit": "3" }, - "FeatureMultiTriggerExecutionIDsActiveAt": "2025-06-15 00:00:00 +0000 UTC" + "FeatureMultiTriggerExecutionIDsActiveAt": "2025-06-15 00:00:00 +0000 UTC", + "FeatureOCRQueueEnabled": "true" } }`), &cfg)) assert.Equal(t, 500, cfg.WorkflowLimit.DefaultValue) assert.Equal(t, 14*config.KByte, cfg.GatewayIncomingPayloadSizeLimit.DefaultValue) assert.Equal(t, true, cfg.GatewayVaultManagementEnabled.DefaultValue) + assert.Equal(t, true, cfg.PerWorkflow.FeatureOCRQueueEnabled.DefaultValue) assert.Equal(t, 48*time.Hour, cfg.PerOrg.ZeroBalancePruningTimeout.DefaultValue) assert.Equal(t, 99, cfg.PerOwner.WorkflowExecutionConcurrencyLimit.DefaultValue) assert.Equal(t, 250*config.MByte, cfg.PerWorkflow.WASMMemoryLimit.DefaultValue) @@ -141,6 +143,14 @@ func TestSchema_Unmarshal(t *testing.T) { assert.Equal(t, config.Timestamp(time.Date(2025, 6, 15, 0, 0, 0, 0, time.UTC).Unix()), cfg.PerWorkflow.FeatureMultiTriggerExecutionIDsActiveAt.DefaultValue) } +func TestFeatureOCRQueueEnabled(t *testing.T) { + assert.False(t, Default.PerWorkflow.FeatureOCRQueueEnabled.DefaultValue, "default should be false") + + got, err := Default.PerWorkflow.FeatureOCRQueueEnabled.GetOrDefault(t.Context(), nil) + require.NoError(t, err) + assert.False(t, got, "GetOrDefault with nil getter should return default false") +} + func TestDefaultGetter(t *testing.T) { limit := Default.PerWorkflow.HTTPAction.CallLimit