diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 659e4a8cd..8a71d8dc2 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -7,8 +7,8 @@ assignees: '' --- -Please read our [contributor guide](https://github.com/Netflix/conductor/blob/main/CONTRIBUTING.md) before creating an issue. -Also consider discussing your idea on the [discussion forum](https://github.com/Netflix/conductor/discussions) first. +Please read our [contributor guide](https://github.com/conductor-oss/conductor/blob/main/CONTRIBUTING.md) before creating an issue. +Also consider discussing your idea on the [discussion forum](https://github.com/conductor-oss/conductor/discussions) first. ## Describe the Feature Request _A clear and concise description of what the feature request is._ diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ef87e0b82..fa854fcdc 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,9 +5,9 @@ updates: schedule: interval: "weekly" reviewers: - - "aravindanr" - - "jxu-nflx" - - "apanicker-nflx" + - "v1r3n" + - "boney9" + - "c4lm" - package-ecosystem: "github-actions" directory: "/" schedule: diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4cd3eb440..8367fbc9a 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -3,7 +3,7 @@ Pull Request type - [ ] Bugfix - [ ] Feature - [ ] Refactoring (no functional changes, no api changes) -- [ ] Build related changes (Please run `./gradlew generateLock saveLock` to refresh dependencies) +- [ ] Build related changes - [ ] WHOSUSING.md - [ ] Other (please describe): diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9528884b4..a25c97dd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,12 +42,7 @@ jobs: if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main' run: | echo "Running build for commit ${{ github.sha }}" - ./gradlew build snapshot --scan - env: - NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} - NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} - NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} - NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} + ./gradlew build - name: Publish Test Report uses: mikepenz/action-junit-report@v3 if: always() diff --git a/.github/workflows/generate_gh_pages.yml b/.github/workflows/generate_gh_pages.yml new file mode 100644 index 000000000..8c429e1b8 --- /dev/null +++ b/.github/workflows/generate_gh_pages.yml @@ -0,0 +1,18 @@ +name: Publish docs via GitHub Pages +on: + workflow_dispatch + +jobs: + build: + name: Deploy docs + runs-on: ubuntu-latest + steps: + - name: Checkout main + uses: actions/checkout@v2 + + - name: Deploy docs + uses: mhausenblas/mkdocs-deploy-gh-pages@master + env: + GITHUB_TOKEN: ${{ secrets.DOCSITE_TOKEN }} + CONFIG_FILE: mkdocs.yml + REQUIREMENTS: requirements.txt diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3bf0960ae..51b514ffa 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,4 +1,4 @@ -name: Publish to NetflixOSS and Maven Central +name: Publish Conductor OSS toMaven Central on: release: types: @@ -28,39 +28,13 @@ jobs: key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- - - name: Publish candidate - if: startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-rc.') - run: ./gradlew -Prelease.useLastTag=true candidate --scan - env: - NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }} - NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }} - NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} - NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} - NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} - NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} - name: Publish release - if: startsWith(github.ref, 'refs/tags/v') && (!contains(github.ref, '-rc.')) - run: ./gradlew -Prelease.useLastTag=true final --scan - env: - NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }} - NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }} - NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} - NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} - NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} - NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} - - name: Publish tag to community repo - if: startsWith(github.ref, 'refs/tags/v') run: | - export TAG=$(git describe --tags --abbrev=0) - echo "Current release version is $TAG" - echo "Triggering community build" - curl \ - -H "Accept: application/vnd.github.v3+json" \ - -H "Authorization: Bearer ${{ secrets.COMMUNITY_REPO_TRIGGER }}" \ - -X POST https://api.github.com/repos/Netflix/conductor-community/dispatches \ - -d '{"event_type": "publish_build","client_payload": {"tag":"'"$TAG"'"}}' - - name: Publish Test Report - uses: mikepenz/action-junit-report@v3 - if: always() # always run even if the previous step fails - with: - report_paths: '**/build/test-results/test/TEST-*.xml' + export VERSION="${{github.ref_name}}" + export PUBLISH_VERSION=`echo ${VERSION:1}` + echo Publishing version $PUBLISH_VERSION + ./gradlew publish -Pversion=$PUBLISH_VERSION -Pusername=${{ secrets.SONATYPE_USERNAME }} -Ppassword=${{ secrets.SONATYPE_PASSWORD }} + env: + ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }} + ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }} + ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }} \ No newline at end of file diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index a90156f3b..000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Close stale issues and pull requests - -on: - schedule: - - cron: "0 0 * * *" - -permissions: - contents: read - -jobs: - stale: - permissions: - issues: write # for actions/stale to close stale issues - pull-requests: write # for actions/stale to close stale PRs - runs-on: ubuntu-latest - steps: - - uses: actions/stale@v6 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue is stale, because it has been open for 45 days with no activity. Remove the stale label or comment, or this will be closed in 7 days.' - close-issue-message: 'This issue was closed, because it has been stalled for 7 days with no activity.' - stale-pr-message: 'This PR is stale, because it has been open for 45 days with no activity. Remove the stale label or comment, or this will be closed in 7 days.' - close-pr-message: 'This PR was closed, because it has been stalled for 7 days with no activity.' - days-before-issue-stale: 45 - days-before-issue-close: 7 - days-before-pr-stale: 45 - days-before-pr-close: 7 - exempt-issue-labels: 'type: bug,enhancement,work_in_progress,help_wanted' diff --git a/.github/workflows/update-gradle-wrapper.yml b/.github/workflows/update-gradle-wrapper.yml deleted file mode 100644 index 831e6d5aa..000000000 --- a/.github/workflows/update-gradle-wrapper.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Update Gradle Wrapper - -on: - schedule: - - cron: "0 0 * * *" - workflow_dispatch: - -jobs: - update-gradle-wrapper: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up Zulu JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '17' - - name: Update Gradle Wrapper - uses: gradle-update/update-gradle-wrapper-action@v1 diff --git a/CHANGELOG.md b/CHANGELOG.md index c17a8bda8..e69de29bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,371 +0,0 @@ -Conductor has been upgraded to use the SpringBoot framework and requires Java11 or above. -#### NOTE: The java clients (conductor-client, conductor-client-spring, conductor-grpc-client) are still compiled using Java8 to ensure backward compatibility and smoother migration. - -## Removals/Deprecations -- Removed support for EmbeddedElasticSearch -- Removed deprecated constructors in DynoQueueDAO -- Removed deprecated methods in the Worker interface -- Removed OAuth Support in HTTP task (Looking for contributions for OAuth/OAuth2.0) -- Removed deprecated fields and methods in the Workflow object -- Removed deprecated fields and methods in the Task object -- Removed deprecated fields and methods in the WorkflowTask object - -Removed unused methods from QueueDAO: -- List pop(String, int, int, long) -- List pollMessages(String, int, int, long) - -Removed APIs: -- GET /tasks/in_progress/{tasktype} -- GET /tasks/in_progress/{workflowId}/{taskRefName} -- POST /tasks/{taskId}/ack -- POST /tasks/queue/requeue -- DELETE /queue/{taskType}/{taskId} - - -- GET /event/queues -- GET /event/queues/providers - - -- void restart(String) in workflow client -- List getPendingTasksByType(String, String, Integer) in task client -- Task getPendingTaskForWorkflow(String, String) in task client -- boolean preAck(Task) in Worker -- int getPollCount() in Worker - -## What's changed -Changes to configurations: - -### `azureblob-storage` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.external.payload.storage.azure_blob.connection_string | conductor.external-payload-storage.azureblob.connectionString | null | -| workflow.external.payload.storage.azure_blob.container_name | conductor.external-payload-storage.azureblob.containerName | conductor-payloads | -| workflow.external.payload.storage.azure_blob.endpoint | conductor.external-payload-storage.azureblob.endpoint | null | -| workflow.external.payload.storage.azure_blob.sas_token | conductor.external-payload-storage.azureblob.sasToken | null | -| workflow.external.payload.storage.azure_blob.signedurlexpirationseconds | conductor.external-payload-storage.azureblob.signedUrlExpirationDuration | 5s | -| workflow.external.payload.storage.azure_blob.workflow_input_path | conductor.external-payload-storage.azureblob.workflowInputPath | workflow/input/ | -| workflow.external.payload.storage.azure_blob.workflow_output_path | conductor.external-payload-storage.azureblob.workflowOutputPath | workflow/output/ | -| workflow.external.payload.storage.azure_blob.task_input_path | conductor.external-payload-storage.azureblob.taskInputPath | task/input/ | -| workflow.external.payload.storage.azure_blob.task_output_path | conductor.external-payload-storage.azureblob.taskOutputPath | task/output/ | - -### `cassandra-persistence` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.cassandra.host | conductor.cassandra.hostAddress | 127.0.0.1 | -| workflow.cassandra.port | conductor.cassandra.port | 9142 | -| workflow.cassandra.cluster | conductor.cassandra.cluster | "" | -| workflow.cassandra.keyspace | conductor.cassandra.keyspace | conductor | -| workflow.cassandra.shard.size | conductor.cassandra.shardSize | 100 | -| workflow.cassandra.replication.strategy | conductor.cassandra.replicationStrategy | SimpleStrategy | -| workflow.cassandra.replication.factor.key | conductor.cassandra.replicationFactorKey | replication_factor | -| workflow.cassandra.replication.factor.value | conductor.cassandra.replicationFactorValue | 3 | -| workflow.cassandra.read.consistency.level | conductor.cassandra.readConsistencyLevel | LOCAL_QUORUM | -| workflow.cassandra.write.consistency.level | conductor.cassandra.writeConsistencyLevel | LOCAL_QUORUM | -| conductor.taskdef.cache.refresh.time.seconds | conductor.cassandra.taskDefCacheRefreshInterval | 60s | -| conductor.eventhandler.cache.refresh.time.seconds | conductor.cassandra.eventHandlerCacheRefreshInterval | 60s | -| workflow.event.execution.persistence.ttl.seconds | conductor.cassandra.eventExecutionPersistenceTTL | 0s | - -### `contribs` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.archival.ttl.seconds | conductor.workflow-status-listener.archival.ttlDuration | 0s | -| workflow.archival.delay.queue.worker.thread.count | conductor.workflow-status-listener.archival.delayQueueWorkerThreadCount | 5 | -| workflow.archival.delay.seconds | conductor.workflow-status-listener.archival.delaySeconds | 60 | -| | | -| workflowstatuslistener.publisher.success.queue | conductor.workflow-status-listener.queue-publisher.successQueue | _callbackSuccessQueue | -| workflowstatuslistener.publisher.failure.queue | conductor.workflow-status-listener.queue-publisher.failureQueue | _callbackFailureQueue | -| | | | -| com.netflix.conductor.contribs.metrics.LoggingMetricsModule.reportPeriodSeconds | conductor.metrics-logger.reportInterval | 30s | -| | | | -| workflow.event.queues.amqp.batchSize | conductor.event-queues.amqp.batchSize | 1 | -| workflow.event.queues.amqp.pollTimeInMs | conductor.event-queues.amqp.pollTimeDuration | 100ms | -| workflow.event.queues.amqp.hosts | conductor.event-queues.amqp.hosts | localhost | -| workflow.event.queues.amqp.username | conductor.event-queues.amqp.username | guest | -| workflow.event.queues.amqp.password | conductor.event-queues.amqp.password | guest | -| workflow.event.queues.amqp.virtualHost | conductor.event-queues.amqp.virtualHost | / | -| workflow.event.queues.amqp.port | conductor.event-queues.amqp.port.port | 5672 | -| workflow.event.queues.amqp.connectionTimeout | conductor.event-queues.amqp.connectionTimeout | 60000ms | -| workflow.event.queues.amqp.useNio | conductor.event-queues.amqp.useNio | false | -| workflow.event.queues.amqp.durable | conductor.event-queues.amqp.durable | true | -| workflow.event.queues.amqp.exclusive | conductor.event-queues.amqp.exclusive | false | -| workflow.event.queues.amqp.autoDelete | conductor.event-queues.amqp.autoDelete | false | -| workflow.event.queues.amqp.contentType | conductor.event-queues.amqp.contentType | application/json | -| workflow.event.queues.amqp.contentEncoding | conductor.event-queues.amqp.contentEncoding | UTF-8 | -| workflow.event.queues.amqp.amqp_exchange | conductor.event-queues.amqp.exchangeType | topic | -| workflow.event.queues.amqp.deliveryMode | conductor.event-queues.amqp.deliveryMode | 2 | -| workflow.listener.queue.useExchange | conductor.event-queues.amqp.useExchange | true | -| workflow.listener.queue.prefix | conductor.event-queues.amqp.listenerQueuePrefix | "" | -| | | | -| io.nats.streaming.clusterId | conductor.event-queues.nats-stream.clusterId | test-cluster | -| io.nats.streaming.durableName | conductor.event-queues.nats-stream.durableName | null | -| io.nats.streaming.url | conductor.event-queues.nats-stream.url | nats://localhost:4222 | -| | | | -| workflow.event.queues.sqs.batchSize | conductor.event-queues.sqs.batchSize | 1 | -| workflow.event.queues.sqs.pollTimeInMS | conductor.event-queues.sqs.pollTimeDuration | 100ms | -| workflow.event.queues.sqs.visibilityTimeoutInSeconds | conductor.event-queues.sqs.visibilityTimeout | 60s | -| workflow.listener.queue.prefix | conductor.event-queues.sqs.listenerQueuePrefix | "" | -| workflow.listener.queue.authorizedAccounts | conductor.event-queues.sqs.authorizedAccounts | "" | -| | | | -| workflow.external.payload.storage.s3.bucket | conductor.external-payload-storage.s3.bucketName | conductor_payloads | -| workflow.external.payload.storage.s3.signedurlexpirationseconds | conductor.external-payload-storage.s3.signedUrlExpirationDuration | 5s | -| workflow.external.payload.storage.s3.region | conductor.external-payload-storage.s3.region | us-east-1 | -| | | | -| http.task.read.timeout | conductor.tasks.http.readTimeout | 150ms | -| http.task.connect.timeout | conductor.tasks.http.connectTimeout | 100ms | -| | | | -| kafka.publish.request.timeout.ms | conductor.tasks.kafka-publish.requestTimeout | 100ms | -| kafka.publish.max.block.ms | conductor.tasks.kafka-publish.maxBlock | 500ms | -| kafka.publish.producer.cache.size | conductor.tasks.kafka-publish.cacheSize | 10 | -| kafka.publish.producer.cache.time.ms | conductor.tasks.kafka-publish.cacheTime | 120000ms | - -### `core` module: - -| Old | New | Default | -| --- | --- | --- | -| environment | _removed_ | | -| STACK | conductor.app.stack | test | -| APP_ID | conductor.app.appId | conductor | -| workflow.executor.service.max.threads | conductor.app.executorServiceMaxThreadCount | 50 | -| decider.sweep.frequency.seconds | conductor.app.sweepFrequency | 30s | -| workflow.sweeper.thread.count | conductor.app.sweeperThreadCount | 5 | -| - | conductor.app.sweeperWorkflowPollTimeout | 2000ms | -| workflow.event.processor.thread.count | conductor.app.eventProcessorThreadCount | 2 | -| workflow.event.message.indexing.enabled | conductor.app.eventMessageIndexingEnabled | true | -| workflow.event.execution.indexing.enabled | conductor.app.eventExecutionIndexingEnabled | true | -| workflow.decider.locking.enabled | conductor.app.workflowExecutionLockEnabled | false | -| workflow.locking.lease.time.ms | conductor.app.lockLeaseTime | 60000ms | -| workflow.locking.time.to.try.ms | conductor.app.lockTimeToTry | 500ms | -| tasks.active.worker.lastpoll | conductor.app.activeWorkerLastPollTimeout | 10s | -| task.queue.message.postponeSeconds | conductor.app.taskExecutionPostponeDuration | 60s | -| workflow.taskExecLog.indexing.enabled | conductor.app.taskExecLogIndexingEnabled | true | -| async.indexing.enabled | conductor.app.asyncIndexingEnabled | false | -| workflow.system.task.worker.thread.count | conductor.app.systemTaskWorkerThreadCount | # available processors * 2 | -| workflow.system.task.worker.callback.seconds | conductor.app.systemTaskWorkerCallbackDuration | 30s | -| workflow.system.task.worker.poll.interval | conductor.app.systemTaskWorkerPollInterval | 50s | -| workflow.system.task.worker.executionNameSpace | conductor.app.systemTaskWorkerExecutionNamespace | "" | -| workflow.isolated.system.task.worker.thread.count | conductor.app.isolatedSystemTaskWorkerThreadCount | 1 | -| workflow.system.task.queue.pollCount | conductor.app.systemTaskMaxPollCount | 1 | -| async.update.short.workflow.duration.seconds | conductor.app.asyncUpdateShortRunningWorkflowDuration | 30s | -| async.update.delay.seconds | conductor.app.asyncUpdateDelay | 60s | -| summary.input.output.json.serialization.enabled | conductor.app.summary-input-output-json-serialization.enabled | false | -| workflow.owner.email.mandatory | conductor.app.ownerEmailMandatory | true | -| workflow.repairservice.enabled | conductor.app.workflowRepairServiceEnabled | false | -| workflow.event.queue.scheduler.poll.thread.count | conductor.app.eventSchedulerPollThreadCount | # CPU cores | -| workflow.dyno.queues.pollingInterval | conductor.app.eventQueuePollInterval | 100ms | -| workflow.dyno.queues.pollCount | conductor.app.eventQueuePollCount | 10 | -| workflow.dyno.queues.longPollTimeout | conductor.app.eventQueueLongPollTimeout | 1000ms | -| conductor.workflow.input.payload.threshold.kb | conductor.app.workflowInputPayloadSizeThreshold | 5120KB | -| conductor.max.workflow.input.payload.threshold.kb | conductor.app.maxWorkflowInputPayloadSizeThreshold | 10240KB | -| conductor.workflow.output.payload.threshold.kb | conductor.app.workflowOutputPayloadSizeThreshold | 5120KB | -| conductor.max.workflow.output.payload.threshold.kb | conductor.app.maxWorkflowOutputPayloadSizeThreshold | 10240KB | -| conductor.task.input.payload.threshold.kb | conductor.app.taskInputPayloadSizeThreshold | 3072KB | -| conductor.max.task.input.payload.threshold.kb | conductor.app.maxTaskInputPayloadSizeThreshold | 10240KB | -| conductor.task.output.payload.threshold.kb | conductor.app.taskOutputPayloadSizeThreshold | 3072KB | -| conductor.max.task.output.payload.threshold.kb | conductor.app.maxTaskOutputPayloadSizeThreshold | 10240KB | -| conductor.max.workflow.variables.payload.threshold.kb | conductor.app.maxWorkflowVariablesPayloadSizeThreshold | 256KB | -| | | | -| workflow.isolated.system.task.enable | conductor.app.isolatedSystemTaskEnabled | false | -| workflow.isolated.system.task.poll.time.secs | conductor.app.isolatedSystemTaskQueuePollInterval | 10s | -| | | | -| workflow.task.pending.time.threshold.minutes | conductor.app.taskPendingTimeThreshold | 60m | -| | | | -| workflow.monitor.metadata.refresh.counter | conductor.workflow-monitor.metadataRefreshInterval | 10 | -| workflow.monitor.stats.freq.seconds | conductor.workflow-monitor.statsFrequency | 60s | - -### `es6-persistence` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.elasticsearch.version | conductor.elasticsearch.version | 6 | -| workflow.elasticsearch.url | conductor.elasticsearch.url | localhost:9300 | -| workflow.elasticsearch.index.name | conductor.elasticsearch.indexPrefix | conductor | -| workflow.elasticsearch.tasklog.index.name | _removed_ | | -| workflow.elasticsearch.cluster.health.color | conductor.elasticsearch.clusterHealthColor | green | -| workflow.elasticsearch.archive.search.batchSize | _removed_ | | -| workflow.elasticsearch.index.batchSize | conductor.elasticsearch.indexBatchSize | 1 | -| workflow.elasticsearch.async.dao.worker.queue.size | conductor.elasticsearch.asyncWorkerQueueSize | 100 | -| workflow.elasticsearch.async.dao.max.pool.size | conductor.elasticsearch.asyncMaxPoolSize | 12 | -| workflow.elasticsearch.async.buffer.flush.timeout.seconds | conductor.elasticsearch.asyncBufferFlushTimeout | 10s | -| workflow.elasticsearch.index.shard.count | conductor.elasticsearch.indexShardCount | 5 | -| workflow.elasticsearch.index.replicas.count | conductor.elasticsearch.indexReplicasCount | 1 | -| tasklog.elasticsearch.query.size | conductor.elasticsearch.taskLogResultLimit | 10 | -| workflow.elasticsearch.rest.client.connectionRequestTimeout.milliseconds | conductor.elasticsearch.restClientConnectionRequestTimeout | -1 | -| workflow.elasticsearch.auto.index.management.enabled | conductor.elasticsearch.autoIndexManagementEnabled | true | -| workflow.elasticsearch.document.type.override | conductor.elasticsearch.documentTypeOverride | "" | - -### `es7-persistence` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.elasticsearch.version | conductor.elasticsearch.version | 7 | -| workflow.elasticsearch.url | conductor.elasticsearch.url | localhost:9300 | -| workflow.elasticsearch.index.name | conductor.elasticsearch.indexPrefix | conductor | -| workflow.elasticsearch.tasklog.index.name | _removed_ | | -| workflow.elasticsearch.cluster.health.color | conductor.elasticsearch.clusterHealthColor | green | -| workflow.elasticsearch.archive.search.batchSize | _removed_ | | -| workflow.elasticsearch.index.batchSize | conductor.elasticsearch.indexBatchSize | 1 | -| workflow.elasticsearch.async.dao.worker.queue.size | conductor.elasticsearch.asyncWorkerQueueSize | 100 | -| workflow.elasticsearch.async.dao.max.pool.size | conductor.elasticsearch.asyncMaxPoolSize | 12 | -| workflow.elasticsearch.async.buffer.flush.timeout.seconds | conductor.elasticsearch.asyncBufferFlushTimeout | 10s | -| workflow.elasticsearch.index.shard.count | conductor.elasticsearch.indexShardCount | 5 | -| workflow.elasticsearch.index.replicas.count | conductor.elasticsearch.indexReplicasCount | 1 | -| tasklog.elasticsearch.query.size | conductor.elasticsearch.taskLogResultLimit | 10 | -| workflow.elasticsearch.rest.client.connectionRequestTimeout.milliseconds | conductor.elasticsearch.restClientConnectionRequestTimeout | -1 | -| workflow.elasticsearch.auto.index.management.enabled | conductor.elasticsearch.autoIndexManagementEnabled | true | -| workflow.elasticsearch.document.type.override | conductor.elasticsearch.documentTypeOverride | "" | -| workflow.elasticsearch.basic.auth.username | conductor.elasticsearch.username | "" | -| workflow.elasticsearch.basic.auth.password | conductor.elasticsearch.password | "" | - -### `grpc-server` module: - -| Old | New | Default | -| --- | --- | --- | -| conductor.grpc.server.port | conductor.grpc-server.port | 8090 | -| conductor.grpc.server.reflectionEnabled | conductor.grpc-server.reflectionEnabled | true | - -### `mysql-persistence` module (v3.0.0 - v3.0.5): - -| Old | New | Default | -| --- | --- | --- | -| jdbc.url | conductor.mysql.jdbcUrl | jdbc:mysql://localhost:3306/conductor | -| jdbc.username | conductor.mysql.jdbcUsername | conductor | -| jdbc.password | conductor.mysql.jdbcPassword | password | -| flyway.enabled | conductor.mysql.flywayEnabled | true | -| flyway.table | conductor.mysql.flywayTable | null | -| conductor.mysql.connection.pool.size.max | conductor.mysql.connectionPoolMaxSize | -1 | -| conductor.mysql.connection.pool.idle.min | conductor.mysql.connectionPoolMinIdle | -1 | -| conductor.mysql.connection.lifetime.max | conductor.mysql.connectionMaxLifetime | 30m | -| conductor.mysql.connection.idle.timeout | conductor.mysql.connectionIdleTimeout | 10m | -| conductor.mysql.connection.timeout | conductor.mysql.connectionTimeout | 30s | -| conductor.mysql.transaction.isolation.level | conductor.mysql.transactionIsolationLevel | "" | -| conductor.mysql.autocommit | conductor.mysql.autoCommit | false | -| conductor.taskdef.cache.refresh.time.seconds | conductor.mysql.taskDefCacheRefreshInterval | 60s | - -### `mysql-persistence` module (v3.0.5+): - -| Old | New | -| --- | --- | -| jdbc.url | spring.datasource.url | -| jdbc.username | spring.datasource.username | -| jdbc.password | spring.datasource.password | -| flyway.enabled | spring.flyway.enabled | -| flyway.table | spring.flyway.table | -| conductor.mysql.connection.pool.size.max | spring.datasource.hikari.maximum-pool-size | -| conductor.mysql.connection.pool.idle.min | spring.datasource.hikari.minimum-idle | -| conductor.mysql.connection.lifetime.max | spring.datasource.hikari.max-lifetime | -| conductor.mysql.connection.idle.timeout | spring.datasource.hikari.idle-timeout | -| conductor.mysql.connection.timeout | spring.datasource.hikari.connection-timeout | -| conductor.mysql.transaction.isolation.level | spring.datasource.hikari.transaction-isolation | -| conductor.mysql.autocommit | spring.datasource.hikari.auto-commit | -| conductor.taskdef.cache.refresh.time.seconds | conductor.mysql.taskDefCacheRefreshInterval | - -* for more properties and default values: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#application-properties.data.spring.datasource.hikari - -### `postgres-persistence` module (v3.0.0 - v3.0.5): - -| Old | New | Default | -| --- | --- | --- | -| jdbc.url | conductor.postgres.jdbcUrl | jdbc:postgresql://localhost:5432/conductor | -| jdbc.username | conductor.postgres.jdbcUsername | conductor | -| jdbc.password | conductor.postgres.jdbcPassword | password | -| flyway.enabled | conductor.postgres.flywayEnabled | true | -| flyway.table | conductor.postgres.flywayTable | null | -| conductor.postgres.connection.pool.size.max | conductor.postgres.connectionPoolMaxSize | -1 | -| conductor.postgres.connection.pool.idle.min | conductor.postgres.connectionPoolMinIdle | -1 | -| conductor.postgres.connection.lifetime.max | conductor.postgres.connectionMaxLifetime | 30m | -| conductor.postgres.connection.idle.timeout | conductor.postgres.connectionIdleTimeout | 10m | -| conductor.postgres.connection.timeout | conductor.postgres.connectionTimeout | 30s | -| conductor.postgres.transaction.isolation.level | conductor.postgres.transactionIsolationLevel | "" | -| conductor.postgres.autocommit | conductor.postgres.autoCommit | false | -| conductor.taskdef.cache.refresh.time.seconds | conductor.postgres.taskDefCacheRefreshInterval | 60s | - -### `postgres-persistence` module (v3.0.5+): - -| Old | New | -| --- | --- | -| jdbc.url | spring.datasource.url | -| jdbc.username | spring.datasource.username | -| jdbc.password | spring.datasource.password | -| flyway.enabled | spring.flyway.enabled | -| flyway.table | spring.flyway.table | -| conductor.postgres.connection.pool.size.max | spring.datasource.hikari.maximum-pool-size | -| conductor.postgres.connection.pool.idle.min | spring.datasource.hikari.minimum-idle | -| conductor.postgres.connection.lifetime.max | spring.datasource.hikari.max-lifetime | -| conductor.postgres.connection.idle.timeout | spring.datasource.hikari.idle-timeout | -| conductor.postgres.connection.timeout | spring.datasource.hikari.connection-timeout | -| conductor.postgres.transaction.isolation.level | spring.datasource.hikari.transaction-isolation | -| conductor.postgres.autocommit | spring.datasource.hikari.auto-commit | -| conductor.taskdef.cache.refresh.time.seconds | conductor.postgres.taskDefCacheRefreshInterval | - -* for more properties and default values: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#application-properties.data.spring.datasource.hikari - -### `redis-lock` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.redis.locking.server.type | conductor.redis-lock.serverType | single | -| workflow.redis.locking.server.address | conductor.redis-lock.serverAddress | redis://127.0.0.1:6379 | -| workflow.redis.locking.server.password | conductor.redis-lock.serverPassword | null | -| workflow.redis.locking.server.master.name | conductor.redis-lock.serverMasterName | master | -| workflow.decider.locking.namespace | conductor.redis-lock.namespace | "" | -| workflow.decider.locking.exceptions.ignore | conductor.redis-lock.ignoreLockingExceptions | false | - -### `redis-persistence` module: - -| Old | New | Default | -| --- | --- | --- | -| EC2_REGION | conductor.redis.dataCenterRegion | us-east-1 | -| EC2_AVAILABILITY_ZONE | conductor.redis.availabilityZone | us-east-1c | -| workflow.dynomite.cluster | _removed_ | -| workflow.dynomite.cluster.name | conductor.redis.clusterName | "" | -| workflow.dynomite.cluster.hosts | conductor.redis.hosts | null | -| workflow.namespace.prefix | conductor.redis.workflowNamespacePrefix | null | -| workflow.namespace.queue.prefix | conductor.redis.queueNamespacePrefix | null | -| workflow.dyno.keyspace.domain | conductor.redis.keyspaceDomain | null | -| workflow.dynomite.connection.maxConnsPerHost | conductor.redis.maxConnectionsPerHost | 10 | -| workflow.dynomite.connection.max.retry.attempt | conductor.redis.maxRetryAttempts | 0 | -| workflow.dynomite.connection.max.timeout.exhausted.ms | conductor.redis.maxTimeoutWhenExhausted | 800ms | -| queues.dynomite.nonQuorum.port | conductor.redis.queuesNonQuorumPort | 22122 | -| workflow.dyno.queue.sharding.strategy | conductor.redis.queueShardingStrategy | roundRobin | -| conductor.taskdef.cache.refresh.time.seconds | conductor.redis.taskDefCacheRefreshInterval | 60s | -| workflow.event.execution.persistence.ttl.seconds | conductor.redis.eventExecutionPersistenceTTL | 60s | - -### `zookeeper-lock` module: - -| Old | New | Default | -| --- | --- | --- | -| workflow.zookeeper.lock.connection | conductor.zookeeper-lock.connectionString | localhost:2181 | -| workflow.zookeeper.lock.sessionTimeoutMs | conductor.zookeeper-lock.sessionTimeout | 60000ms | -| workflow.zookeeper.lock.connectionTimeoutMs | conductor.zookeeper-lock.connectionTimeout | 15000ms | -| workflow.decider.locking.namespace | conductor.zookeeper-lock.namespace | "" | - -### Component configuration: - -| Old | New | Default | -| --- | --- | --- | -| db | conductor.db.type | "" | -| workflow.indexing.enabled | conductor.indexing.enabled | true | -| conductor.disable.async.workers | conductor.system-task-workers.enabled | true | -| decider.sweep.disable | conductor.workflow-reconciler.enabled | true | -| conductor.grpc.server.enabled | conductor.grpc-server.enabled | false | -| workflow.external.payload.storage | conductor.external-payload-storage.type | dummy | -| workflow.default.event.processor.enabled | conductor.default-event-processor.enabled | true | -| workflow.events.default.queue.type | conductor.default-event-queue.type | sqs | -| workflow.status.listener.type | conductor.workflow-status-listener.type | stub | -| - | conductor.task-status-listener.type | stub | -| workflow.decider.locking.server | conductor.workflow-execution-lock.type | noop_lock | -| | | | -| workflow.default.event.queue.enabled | conductor.event-queues.default.enabled | true | -| workflow.sqs.event.queue.enabled | conductor.event-queues.sqs.enabled | false | -| workflow.amqp.event.queue.enabled | conductor.event-queues.amqp.enabled | false | -| workflow.nats.event.queue.enabled | conductor.event-queues.nats.enabled | false | -| workflow.nats_stream.event.queue.enabled | conductor.event-queues.nats-stream.enabled | false | -| | | | -| - | conductor.metrics-logger.enabled | false | -| - | conductor.metrics-prometheus.enabled | false | -| - | conductor.metrics-datadog.enable | false | -| - | conductor.metrics-datadog.api-key | | - diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index b9c30c329..33d0b4d0a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1 +1,62 @@ -[Code of Conduct](docs/docs/resources/code-of-conduct.md) \ No newline at end of file +# Code of Conduct + +Hello valued community members! đ + +Our Conductor community has grown tremendously, and as part of ensuring a harmonious experience for everyone, +we've outlined some guidelines that we'd love for all members to uphold. +Our community thrives when everyone engages with kindness, respect, and a collaborative spirit. Here's what we hope to see: + + +### 1. Maintain a Positive Tone. +Every interaction is an opportunity to lift someone up. Let's ensure our words and actions reflect optimism and encouragement. + +### 2. Be Respectful to the Community +Every member here comes with a unique background and perspective. Please honor those differences by being courteous, considerate, and open-minded. +Remember, mutual respect is the foundation of a thriving community. Be careful in the words that you choose. +We are a community of professionals, and we conduct ourselves professionally. +Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behaviors aren't acceptable. +This includes, but is not limited to: +* Violent threats or language directed against another person Discriminatory jokes and language +* Posting sexualized language or imagery +* Posting (or threatening to post) other people's personally identifying information (âdoxingâ) +* Personal insults, especially those using racist or sexist terms +* Unwelcome sexual attention +* Advocating for, or encouraging, any of the above behavior +* Repeated harassment of others. In general, if someone asks you to stop, then stop + +### 3. Preserve Our Community's Unity +We understand that as we grow, there might be differing opinions and interests. +However, we kindly request not to create splinter groups or fork out the community. +Let's work through our differences and continue building this space together. + +### 4. Focus on Constructive Discussions +We all have moments of frustration, but let's express ourselves in ways that are constructive. +Avoid comments that could come off as sarcastic, condescending, or disdainful. +Remember, it's always possible to give feedback or express disagreement without belittling others. +We are here to learn from each other and make Conductor the best platform out there. +A big part of that are the exchanges of ideas and approaches that are grounded in data and sound reasoning. +We kindly request that you adhere to that pattern and be thoughtful and responsible in your discussions. +This also means that you are required to have discussions focused on the community and not on promotion of any services, products or goods. + +### 5. When we disagree, try to understand why. +Disagreements, both social and technical, happen all the time and this community is no exception. +It is important that we resolve disagreements and differing views constructively. +Remember that weâre all different. The strength of this community comes from its varied community of people from a wide range of backgrounds. +Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesnât mean that theyâre wrong. +Donât forget that it is human to err and blaming each other doesnât get us anywhere. +Instead, focus on helping to resolve issues and learning from mistakes. +Our community's strength lies in our collective spirit. +By following these guidelines, we ensure that our community remains an inspiring, respectful, and welcoming place for everyone. +If you have any concerns or suggestions or if you need to report on any behavior that violates this Code of Conduct, please feel free to reach out to the admins - community@orkes.io. +Let's continue to support and uplift each other! + +### Enforcement +We have a variety of ways of enforcing the code of conduct, including, but not limited to +* Asking you nicely to knock it off +* Asking you less nicely +* Temporary or permanent suspension of the account +* Removal of privileges and/or adding restrictions to the account +* Removal of content +* Banning from the community + +Thank you, \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ba24e0019..b102a7a37 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1 +1,60 @@ -[Contributing](docs/docs/resources/contributing.md) \ No newline at end of file +# Contributing +Thanks for your interest in Conductor! +This guide helps to find the most efficient way to contribute, ask questions, and report issues. + +Code of conduct +----- + +Please review our [Code of Conduct](https://orkes.io/orkes-conductor-community-code-of-conduct) + +I have a question! +----- + +We have a dedicated [discussion forum](https://github.com/conductor-oss/conductor/discussions) for asking "how to" questions and to discuss ideas. The discussion forum is a great place to start if you're considering creating a feature request or work on a Pull Request. +*Please do not create issues to ask questions.* + +Conductor users hangout in the [Slack channel](https://join.slack.com/t/orkes-conductor/shared_invite/zt-xyxqyseb-YZ3hwwAgHJH97bsrYRnSZg). Join the channel for more real-time communication! + +I want to contribute! +------ + +We welcome Pull Requests and already had many outstanding community contributions! +Creating and reviewing Pull Requests take considerable time. This section helps you to set up a smooth Pull Request experience. + +The stable branch is [main](https://github.com/conductor-oss/conductor/tree/main). + +Please create pull requests for your contributions against [main](https://github.com/conductor-oss/conductor/tree/main) only. + +It's a great idea to discuss the new feature you're considering on the [discussion forum](https://github.com/conductor-oss/conductor/discussions) before writing any code. There are often different ways you can implement a feature. Getting some discussion about different options helps shape the best solution. When starting directly with a Pull Request, there is the risk of having to make considerable changes. Sometimes that is the best approach, though! Showing an idea with code can be very helpful; be aware that it might be throw-away work. Some of our best Pull Requests came out of multiple competing implementations, which helped shape it to perfection. + +Also, consider that not every feature is a good fit for Conductor. A few things to consider are: + +* Is it increasing complexity for the user, or might it be confusing? +* Does it, in any way, break backward compatibility (this is seldom acceptable) +* Does it require new dependencies (this is rarely acceptable for core modules) +* Should the feature be opt-in or enabled by default. For integration with a new Queuing recipe or persistence module, a separate module which can be optionally enabled is the right choice. +* Should the feature be implemented in the main Conductor repository, or would it be better to set up a separate repository? Especially for integration with other systems, a separate repository is often the right choice because the life-cycle of it will be different. +* Is it part of the Conductor project roadmap? + +Of course, for more minor bug fixes and improvements, the process can be more light-weight. + +We'll try to be responsive to Pull Requests. Do keep in mind that because of the inherently distributed nature of open source projects, responses to a PR might take some time because of time zones, weekends, and other things we may be working on. + +I want to report an issue +----- + +If you found a bug, it is much appreciated if you create an issue. Please include clear instructions on how to reproduce the issue, or even better, include a test case on a branch. Make sure to come up with a descriptive title for the issue because this helps while organizing issues. + +I have a great idea for a new feature +---- +Many features in Conductor have come from ideas from the community. If you think something is missing or certain use cases could be supported better, let us know! You can do so by opening a discussion on the [discussion forum](https://github.com/conductor-oss/conductor/discussions). Provide as much relevant context to why and when the feature would be helpful. Providing context is especially important for "Support XYZ" issues since we might not be familiar with what "XYZ" is and why it's useful. If you have an idea of how to implement the feature, include that as well. + +Once we have decided on a direction, it's time to summarize the idea by creating a new issue. + +## Code Style +We use [spotless](https://github.com/diffplug/spotless) to enforce consistent code style for the project, so make sure to run `gradlew spotlessApply` to fix any violations after code changes. + +## License +All files are released with the Apache 2.0 license. + + diff --git a/LICENSE b/LICENSE index 6a1d025d8..78ae7ea62 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} Netflix, Inc. + Copyright {yyyy} Orkes, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 0d24f3066..2fd5c8153 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,7 @@ -![Conductor](docs/docs/img/logo.png) +![Conductor](docs/img/logo.svg) -## Announcement - -> Effective **December 13, 2023**, Netflix will discontinue maintenance of Conductor OSS on GitHub. This strategic decision, while difficult, is essential for realigning our resources to better serve our business objectives with our internal Conductor fork. -> -> We are *deeply grateful* for your support and contributions over the years. While Netflix will no longer be maintaining this repo, members of the Conductor community have been active in promoting alternative forks of this project, weâll leave the code as is and trust that the health of the community will remain strong and continue to develop moving forward. - - -# Conductor -[![NetflixOSS Lifecycle](https://img.shields.io/osslifecycle/Netflix/conductor.svg)]() -[![Github release](https://img.shields.io/github/v/release/Netflix/conductor.svg)](https://GitHub.com/Netflix/conductor/releases) -[![License](https://img.shields.io/github/license/Netflix/conductor.svg)](http://www.apache.org/licenses/LICENSE-2.0) - -[![GitHub stars](https://img.shields.io/github/stars/Netflix/conductor.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/Netflix/conductor/stargazers/) -[![GitHub forks](https://img.shields.io/github/forks/Netflix/conductor.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/Netflix/conductor/network/) - -Conductor is a platform created by Netflix to orchestrate workflows that span across microservices. - -## Releases -The final release is [![Github release](https://img.shields.io/github/v/release/Netflix/conductor.svg)](https://GitHub.com/Netflix/conductor/releases) +[![Github release](https://img.shields.io/github/v/release/conductor-oss/conductor.svg)](https://GitHub.com/Netflix/conductor-oss/releases) +[![License](https://img.shields.io/github/license/conductor-oss/conductor.svg)](http://www.apache.org/licenses/LICENSE-2.0) ## Workflow Creation in Code Conductor supports creating workflows using JSON and Code. @@ -63,37 +46,80 @@ Binaries are available from the [Maven Central Repository](https://search.maven. | conductor-grpc-client | gRPC client to interact with the gRPC server | | conductor-grpc-server | gRPC server Application | | conductor-test-harness | Integration and regression tests | +Conductor is a platform _originally_ created at Netflix to orchestrate microservices and events. +Conductor OSS is maintained by the team of developers at [Orkes](https://orkes.io/) along with the members of the open source community. + +The latest version is [![Github release](https://img.shields.io/github/v/release/conductor-oss/conductor.svg)](https://GitHub.com/conductor-oss/conductor/releases) +## Conductor OSS +This is the new home for the Conductor open source going forward (previously hosted at Netflix/Conductor). + +_The last published version of Netflix Conductor will be **3.15.0** which we will continue to support._ + +If you would like to participate in the roadmap and development, [please reach out](https://forms.gle/P2i1xHrxPQLrjzTB7). + +## â This repository +Show support for the Conductor OSS. Please help spread the awareness by starring this repo. + +[![GitHub stars](https://img.shields.io/github/stars/conductor-oss/conductor.svg?style=social&label=Star&maxAge=)](https://GitHub.com/conductor-oss/conductor/) + +## Getting Started + +### Using Docker (Recommended) +Follow the steps below to launch the docker container: + +```shell +docker compose -f docker/docker-compose.yaml up +``` +* Navigate to http://localhost:5000 once the container starts to launch UI. +* APIs are accessible at http://localhost:8080 +* Swagger Docs:http://localhost:8080/swagger-ui/index.html?configUrl=/api-docs/swagger-config#/ ## Database Requirements * The default persistence used is Redis -* The indexing backend is [Elasticsearch](https://www.elastic.co/) (6.x) +* The indexing backend is [Elasticsearch](https://www.elastic.co/) (7.x) + +## Configuration for various database backends + +| Backend | Configuration | +|----------------|---------------------------------------------------------------------------------------| +| Redis + ES7 | [config-redis.properties](docker/server/config/config-redis.properties) | +| Postgres | [config-postgres.properties](docker/server/config/config-postgres.properties) | +| Postgres + ES7 | [config-postgres-es7.properties](docker/server/config/config-postgres-es7.properties) | +| MySQL + ES7 | [config-mysql.properties](docker/server/config/config-mysql.properties) | ## Other Requirements * JDK 17+ -* UI requires Node 14 to build. Earlier Node versions may work but is untested. +* UI requires Node 14 to build. Earlier Node versions may work but are untested. -## Get Support -There are several ways to get in touch with us: -* [Slack Community](https://join.slack.com/t/orkes-conductor/shared_invite/zt-xyxqyseb-YZ3hwwAgHJH97bsrYRnSZg) -* [GitHub Discussion Forum](https://github.com/Netflix/conductor/discussions) +### Building From Source +If you wish to build your own distribution, you can run ```./gradlew build``` from this project that products the runtime artifacts. +The runnable server is in server/ module. + +## Conductor OSS Roadmap +[See the roadmap for the Conductor](ROADMAP.md) + +## Resources +#### [Slack Community](https://join.slack.com/t/orkes-conductor/shared_invite/zt-2hmxn0i3n-_W~a9rWMbvMoYmlJo3Y15g) +We have an active [community](https://join.slack.com/t/orkes-conductor/shared_invite/zt-2hmxn0i3n-_W~a9rWMbvMoYmlJo3Y15g) of Conductor users and contributors on the channel. +#### [Documentation Site](https://docs.conductor-oss.org/) +[Documentation](https://docs.conductor-oss.org/) and tutorial on how to use Conductor + +[Discussion Forum](https://github.com/conductor-oss/conductor/discussions): Please use the forum for questions and discussing ideas and join the community. + +### Conductor SDKs +Conductor supports creating workflows using JSON and Code. +SDK support for creating workflows using code is available in multiple languages and can be found at https://github.com/conductor-sdk -## Contributions -Whether it is a small documentation correction, bug fix or a new feature, contributions are highly appreciated. We just ask you to follow standard OSS guidelines. The [Discussion Forum](https://github.com/Netflix/conductor/discussions) is a good place to ask questions, discuss new features and explore ideas. Please check with us before spending too much time, only to find out later that someone else is already working on a similar feature. -`main` branch is the current working branch. Please send your PR's to `main` branch, making sure that it builds on your local system successfully. Also, please make sure all the conflicts are resolved. -## License -Copyright 2022 Netflix, Inc. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at +## Get Support +There are several ways to get in touch with us: +* [Slack Community](https://join.slack.com/t/orkes-conductor/shared_invite/zt-xyxqyseb-YZ3hwwAgHJH97bsrYRnSZg) - http://www.apache.org/licenses/LICENSE-2.0 +## Contributors -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. + + + diff --git a/RELATED.md b/RELATED.md index b7adabea3..abd0cf105 100644 --- a/RELATED.md +++ b/RELATED.md @@ -1 +1 @@ -[Related Projects](docs/docs/resources/related.md) +[Related Projects](docs/resources/related.md) diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 000000000..35d01abe2 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,75 @@ +# Conductor OSS Roadmap + + +## New Features +### Type safety for workflow inputs and task input/output through JSON Schema + +* Allow type safe workflows and workers with support for JSON schema and protobuf +* Enable scaffolding code generation for workers through schema for workers using CLI tool + +### New System Tasks + +* Database task to work with relational & no-sql databases +* Polling support for HTTP task +* Operators + * * For..Each with parallel and sequential execution + * * Improved While loop + * * Try..Catch for improved error handling at the task level + +### LLM Integrations +Conductor is a perfect platform to build your next LLM powered application or incorporating genAI into your applications. +Enable system tasks for LLM integrations that lets you work with various language models for: +1. Text completion +2. Chat completion with memory +3. Embedding generation + +### CLI for Conductor +Allow developers to manage their conductor instance via CLI. + +* Manage metadata +* Query and manage workflow executions (terminate, pause, resume, retry) +* Start | Stop manage conductor server + +### Support Python as a scripting language for INLINE task +Extend usability of Conductor by allowing lightweight python code as INLINE tasks. + +### New APIs for workflow state management + +* Synchronous execution of workflows +* update workflow variables +* Update tasks synchronously + +## SDKs + +* Rust +* Kotlin +* C++ +* Ruby +* Swift +* Flutter / Dart +* PHP + +### Worker metrics on server +Expose an endpoint on the server that can be used by workers to publish worker specific metrics. +This will allow monitoring metrics for all the workers in a distributed system across the entire system. + +## Testing +Infrastructure to make workflows easier to test and debug right from the UI and IDE. + +### Workflow Debugger + +* Ability to debug your workflows during development just like you would do when you write code +* All functionality of a debugger +* Breakpoints add/remove +* Step to next +* Drop to a certain task that was already executed. (going back in time) +* Ability to inspect, modify, add input / output parameters +* Watch Windows to see values of interesting parameters during execution +* Attaching to a certain WF execution +* Remote Task debugging (with SDK Support).. Enable step by step execution in a task worker from the server + +## Maintenance + +1. Deprecate support for Elasticsearch 6 +2. Update support for newer versions of Elasticsearch +2. Improve/Fix JOIN task performance (less about making it performant and more about just fixing the usability) - Done \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index 80978ee5b..7afa91969 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,4 +10,4 @@ ## Reporting a Vulnerability -Please email conductor@netflix.com to report vulnerabilities. +Please email oss@orkes.com to report vulnerabilities. diff --git a/amqp/build.gradle b/amqp/build.gradle new file mode 100644 index 000000000..ffa9ea735 --- /dev/null +++ b/amqp/build.gradle @@ -0,0 +1,12 @@ +dependencies { + implementation project(':conductor-common') + implementation project(':conductor-core') + + implementation "com.rabbitmq:amqp-client:${revAmqpClient}" + implementation "org.apache.commons:commons-lang3:" + implementation "com.google.guava:guava:${revGuava}" + implementation "io.reactivex:rxjava:${revRxJava}" + + compileOnly 'org.springframework.boot:spring-boot-starter' + compileOnly 'org.springframework.boot:spring-boot-starter-web' +} \ No newline at end of file diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPConnection.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPConnection.java new file mode 100644 index 000000000..d5839539a --- /dev/null +++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/AMQPConnection.java @@ -0,0 +1,391 @@ +/* + * Copyright 2023 Conductor Authors. + *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + *
+ * http://www.apache.org/licenses/LICENSE-2.0 + *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeoutException;
+import java.util.stream.Collectors;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPRetryPattern;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPConstants;
+import com.netflix.conductor.contribs.queue.amqp.util.ConnectionType;
+
+import com.rabbitmq.client.Address;
+import com.rabbitmq.client.BlockedListener;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+import com.rabbitmq.client.ShutdownListener;
+import com.rabbitmq.client.ShutdownSignalException;
+
+public class AMQPConnection {
+
+ private static Logger LOGGER = LoggerFactory.getLogger(AMQPConnection.class);
+ private volatile Connection publisherConnection = null;
+ private volatile Connection subscriberConnection = null;
+ private ConnectionFactory factory = null;
+ private Address[] addresses = null;
+ private static AMQPConnection amqpConnection = null;
+ private static final String PUBLISHER = "Publisher";
+ private static final String SUBSCRIBER = "Subscriber";
+ private static final Map
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp;
+
+import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPEventQueueProperties;
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPRetryPattern;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPConstants;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPSettings;
+import com.netflix.conductor.contribs.queue.amqp.util.ConnectionType;
+import com.netflix.conductor.core.events.queue.Message;
+import com.netflix.conductor.core.events.queue.ObservableQueue;
+import com.netflix.conductor.metrics.Monitors;
+
+import com.google.common.collect.Maps;
+import com.rabbitmq.client.AMQP;
+import com.rabbitmq.client.Address;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.ConnectionFactory;
+import com.rabbitmq.client.Consumer;
+import com.rabbitmq.client.DefaultConsumer;
+import com.rabbitmq.client.Envelope;
+import com.rabbitmq.client.GetResponse;
+import rx.Observable;
+import rx.Subscriber;
+
+/**
+ * @author Ritu Parathody
+ */
+public class AMQPObservableQueue implements ObservableQueue {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AMQPObservableQueue.class);
+
+ private final AMQPSettings settings;
+ private final AMQPRetryPattern retrySettings;
+ private final String QUEUE_TYPE = "x-queue-type";
+ private final int batchSize;
+ private final boolean useExchange;
+ private int pollTimeInMS;
+ private AMQPConnection amqpConnection;
+
+ protected LinkedBlockingQueue
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.config;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.netflix.conductor.contribs.queue.amqp.AMQPObservableQueue.Builder;
+import com.netflix.conductor.core.config.ConductorProperties;
+import com.netflix.conductor.core.events.EventQueueProvider;
+import com.netflix.conductor.core.events.queue.ObservableQueue;
+import com.netflix.conductor.model.TaskModel.Status;
+
+@Configuration(proxyBeanMethods = false)
+@EnableConfigurationProperties(AMQPEventQueueProperties.class)
+@ConditionalOnProperty(name = "conductor.event-queues.amqp.enabled", havingValue = "true")
+public class AMQPEventQueueConfiguration {
+
+ private enum QUEUE_TYPE {
+ AMQP_QUEUE("amqp_queue"),
+ AMQP_EXCHANGE("amqp_exchange");
+
+ private final String type;
+
+ QUEUE_TYPE(String type) {
+ this.type = type;
+ }
+
+ public String getType() {
+ return type;
+ }
+ }
+
+ @Bean
+ public EventQueueProvider amqpEventQueueProvider(AMQPEventQueueProperties properties) {
+ return new AMQPEventQueueProvider(properties, QUEUE_TYPE.AMQP_QUEUE.getType(), false);
+ }
+
+ @Bean
+ public EventQueueProvider amqpExchangeEventQueueProvider(AMQPEventQueueProperties properties) {
+ return new AMQPEventQueueProvider(properties, QUEUE_TYPE.AMQP_EXCHANGE.getType(), true);
+ }
+
+ @ConditionalOnProperty(name = "conductor.default-event-queue.type", havingValue = "amqp")
+ @Bean
+ public Map
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.config;
+
+import java.time.Duration;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import com.netflix.conductor.contribs.queue.amqp.util.RetryType;
+
+import com.rabbitmq.client.AMQP.PROTOCOL;
+import com.rabbitmq.client.ConnectionFactory;
+
+@ConfigurationProperties("conductor.event-queues.amqp")
+public class AMQPEventQueueProperties {
+
+ private int batchSize = 1;
+
+ private Duration pollTimeDuration = Duration.ofMillis(100);
+
+ private String hosts = ConnectionFactory.DEFAULT_HOST;
+
+ private String username = ConnectionFactory.DEFAULT_USER;
+
+ private String password = ConnectionFactory.DEFAULT_PASS;
+
+ private String virtualHost = ConnectionFactory.DEFAULT_VHOST;
+
+ private int port = PROTOCOL.PORT;
+
+ private int connectionTimeoutInMilliSecs = 180000;
+ private int networkRecoveryIntervalInMilliSecs = 5000;
+ private int requestHeartbeatTimeoutInSecs = 30;
+ private int handshakeTimeoutInMilliSecs = 180000;
+ private int maxChannelCount = 5000;
+ private int limit = 50;
+ private int duration = 1000;
+ private RetryType retryType = RetryType.REGULARINTERVALS;
+
+ public int getLimit() {
+ return limit;
+ }
+
+ public void setLimit(int limit) {
+ this.limit = limit;
+ }
+
+ public int getDuration() {
+ return duration;
+ }
+
+ public void setDuration(int duration) {
+ this.duration = duration;
+ }
+
+ public RetryType getType() {
+ return retryType;
+ }
+
+ public void setType(RetryType type) {
+ this.retryType = type;
+ }
+
+ public int getConnectionTimeoutInMilliSecs() {
+ return connectionTimeoutInMilliSecs;
+ }
+
+ public void setConnectionTimeoutInMilliSecs(int connectionTimeoutInMilliSecs) {
+ this.connectionTimeoutInMilliSecs = connectionTimeoutInMilliSecs;
+ }
+
+ public int getHandshakeTimeoutInMilliSecs() {
+ return handshakeTimeoutInMilliSecs;
+ }
+
+ public void setHandshakeTimeoutInMilliSecs(int handshakeTimeoutInMilliSecs) {
+ this.handshakeTimeoutInMilliSecs = handshakeTimeoutInMilliSecs;
+ }
+
+ public int getMaxChannelCount() {
+ return maxChannelCount;
+ }
+
+ public void setMaxChannelCount(int maxChannelCount) {
+ this.maxChannelCount = maxChannelCount;
+ }
+
+ private boolean useNio = false;
+
+ private boolean durable = true;
+
+ private boolean exclusive = false;
+
+ private boolean autoDelete = false;
+
+ private String contentType = "application/json";
+
+ private String contentEncoding = "UTF-8";
+
+ private String exchangeType = "topic";
+
+ private String queueType = "classic";
+
+ private boolean sequentialMsgProcessing = true;
+
+ private int deliveryMode = 2;
+
+ private boolean useExchange = true;
+
+ private String listenerQueuePrefix = "";
+
+ private boolean useSslProtocol = false;
+
+ public int getBatchSize() {
+ return batchSize;
+ }
+
+ public void setBatchSize(int batchSize) {
+ this.batchSize = batchSize;
+ }
+
+ public Duration getPollTimeDuration() {
+ return pollTimeDuration;
+ }
+
+ public void setPollTimeDuration(Duration pollTimeDuration) {
+ this.pollTimeDuration = pollTimeDuration;
+ }
+
+ public String getHosts() {
+ return hosts;
+ }
+
+ public void setHosts(String hosts) {
+ this.hosts = hosts;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getVirtualHost() {
+ return virtualHost;
+ }
+
+ public void setVirtualHost(String virtualHost) {
+ this.virtualHost = virtualHost;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ public void setPort(int port) {
+ this.port = port;
+ }
+
+ public boolean isUseNio() {
+ return useNio;
+ }
+
+ public void setUseNio(boolean useNio) {
+ this.useNio = useNio;
+ }
+
+ public boolean isDurable() {
+ return durable;
+ }
+
+ public void setDurable(boolean durable) {
+ this.durable = durable;
+ }
+
+ public boolean isExclusive() {
+ return exclusive;
+ }
+
+ public void setExclusive(boolean exclusive) {
+ this.exclusive = exclusive;
+ }
+
+ public boolean isAutoDelete() {
+ return autoDelete;
+ }
+
+ public void setAutoDelete(boolean autoDelete) {
+ this.autoDelete = autoDelete;
+ }
+
+ public String getContentType() {
+ return contentType;
+ }
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ public String getContentEncoding() {
+ return contentEncoding;
+ }
+
+ public void setContentEncoding(String contentEncoding) {
+ this.contentEncoding = contentEncoding;
+ }
+
+ public String getExchangeType() {
+ return exchangeType;
+ }
+
+ public void setExchangeType(String exchangeType) {
+ this.exchangeType = exchangeType;
+ }
+
+ public int getDeliveryMode() {
+ return deliveryMode;
+ }
+
+ public void setDeliveryMode(int deliveryMode) {
+ this.deliveryMode = deliveryMode;
+ }
+
+ public boolean isUseExchange() {
+ return useExchange;
+ }
+
+ public void setUseExchange(boolean useExchange) {
+ this.useExchange = useExchange;
+ }
+
+ public String getListenerQueuePrefix() {
+ return listenerQueuePrefix;
+ }
+
+ public void setListenerQueuePrefix(String listenerQueuePrefix) {
+ this.listenerQueuePrefix = listenerQueuePrefix;
+ }
+
+ public String getQueueType() {
+ return queueType;
+ }
+
+ public boolean isUseSslProtocol() {
+ return useSslProtocol;
+ }
+
+ public void setUseSslProtocol(boolean useSslProtocol) {
+ this.useSslProtocol = useSslProtocol;
+ }
+
+ /**
+ * @param queueType Supports two queue types, 'classic' and 'quorum'. Classic will be be
+ * deprecated in 2022 and its usage discouraged from RabbitMQ community. So not using enum
+ * type here to hold different values.
+ */
+ public void setQueueType(String queueType) {
+ this.queueType = queueType;
+ }
+
+ /**
+ * @return the sequentialMsgProcessing
+ */
+ public boolean isSequentialMsgProcessing() {
+ return sequentialMsgProcessing;
+ }
+
+ /**
+ * @param sequentialMsgProcessing the sequentialMsgProcessing to set Supports sequential and
+ * parallel message processing capabilities. In parallel message processing, number of
+ * threads are controlled by batch size. No thread control or execution framework required
+ * here as threads are limited and short-lived.
+ */
+ public void setSequentialMsgProcessing(boolean sequentialMsgProcessing) {
+ this.sequentialMsgProcessing = sequentialMsgProcessing;
+ }
+
+ public int getNetworkRecoveryIntervalInMilliSecs() {
+ return networkRecoveryIntervalInMilliSecs;
+ }
+
+ public void setNetworkRecoveryIntervalInMilliSecs(int networkRecoveryIntervalInMilliSecs) {
+ this.networkRecoveryIntervalInMilliSecs = networkRecoveryIntervalInMilliSecs;
+ }
+
+ public int getRequestHeartbeatTimeoutInSecs() {
+ return requestHeartbeatTimeoutInSecs;
+ }
+
+ public void setRequestHeartbeatTimeoutInSecs(int requestHeartbeatTimeoutInSecs) {
+ this.requestHeartbeatTimeoutInSecs = requestHeartbeatTimeoutInSecs;
+ }
+}
diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/config/AMQPEventQueueProvider.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/config/AMQPEventQueueProvider.java
new file mode 100644
index 000000000..6e17ef8ef
--- /dev/null
+++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/config/AMQPEventQueueProvider.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.config;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.lang.NonNull;
+
+import com.netflix.conductor.contribs.queue.amqp.AMQPObservableQueue;
+import com.netflix.conductor.contribs.queue.amqp.AMQPObservableQueue.Builder;
+import com.netflix.conductor.core.events.EventQueueProvider;
+import com.netflix.conductor.core.events.queue.ObservableQueue;
+
+/**
+ * @author Ritu Parathody
+ */
+public class AMQPEventQueueProvider implements EventQueueProvider {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AMQPEventQueueProvider.class);
+ protected Map
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.config;
+
+import com.netflix.conductor.contribs.queue.amqp.util.RetryType;
+
+public class AMQPRetryPattern {
+
+ private int limit = 50;
+ private int duration = 1000;
+ private RetryType type = RetryType.REGULARINTERVALS;
+
+ public AMQPRetryPattern() {}
+
+ public AMQPRetryPattern(int limit, int duration, RetryType type) {
+ this.limit = limit;
+ this.duration = duration;
+ this.type = type;
+ }
+
+ /**
+ * This gets executed if the retry index is within the allowed limits, otherwise exception will
+ * be thrown.
+ *
+ * @throws Exception
+ */
+ public void continueOrPropogate(Exception ex, int retryIndex) throws Exception {
+ if (retryIndex > limit) {
+ throw ex;
+ }
+ // Regular Intervals is the default
+ long waitDuration = duration;
+ if (type == RetryType.INCREMENTALINTERVALS) {
+ waitDuration = duration * retryIndex;
+ } else if (type == RetryType.EXPONENTIALBACKOFF) {
+ waitDuration = (long) Math.pow(2, retryIndex) * duration;
+ }
+ try {
+ Thread.sleep(waitDuration);
+ } catch (InterruptedException ignored) {
+ Thread.currentThread().interrupt();
+ }
+ }
+}
diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPConfigurations.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPConfigurations.java
new file mode 100644
index 000000000..d0d3b93c5
--- /dev/null
+++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPConfigurations.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.util;
+
+/**
+ * @author Ritu Parathody
+ */
+public enum AMQPConfigurations {
+
+ // queue exchange settings
+ PARAM_EXCHANGE_TYPE("exchangeType"),
+ PARAM_QUEUE_NAME("bindQueueName"),
+ PARAM_ROUTING_KEY("routingKey"),
+ PARAM_DELIVERY_MODE("deliveryMode"),
+ PARAM_DURABLE("durable"),
+ PARAM_EXCLUSIVE("exclusive"),
+ PARAM_AUTO_DELETE("autoDelete"),
+ PARAM_MAX_PRIORITY("maxPriority");
+
+ String propertyName;
+
+ AMQPConfigurations(String propertyName) {
+ this.propertyName = propertyName;
+ }
+
+ @Override
+ public String toString() {
+ return propertyName;
+ }
+}
diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPConstants.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPConstants.java
new file mode 100644
index 000000000..3abd619bf
--- /dev/null
+++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPConstants.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.util;
+
+/**
+ * @author Ritu Parathody
+ */
+public class AMQPConstants {
+
+ /** this when set will create a rabbitmq queue */
+ public static String AMQP_QUEUE_TYPE = "amqp_queue";
+
+ /** this when set will create a rabbitmq exchange */
+ public static String AMQP_EXCHANGE_TYPE = "amqp_exchange";
+
+ public static String PROPERTY_KEY_TEMPLATE = "conductor.event-queues.amqp.%s";
+
+ /** default content type for the message read from rabbitmq */
+ public static String DEFAULT_CONTENT_TYPE = "application/json";
+
+ /** default encoding for the message read from rabbitmq */
+ public static String DEFAULT_CONTENT_ENCODING = "UTF-8";
+
+ /** default rabbitmq exchange type */
+ public static String DEFAULT_EXCHANGE_TYPE = "topic";
+
+ /**
+ * default rabbitmq durability When set to true the queues are persisted to the disk.
+ *
+ * {@see RabbitMQ}.
+ */
+ public static boolean DEFAULT_DURABLE = true;
+
+ /**
+ * default rabbitmq exclusivity When set to true the queues can be only used by one connection.
+ *
+ * {@see RabbitMQ}.
+ */
+ public static boolean DEFAULT_EXCLUSIVE = false;
+
+ /**
+ * default rabbitmq auto delete When set to true the queues will be deleted when the last
+ * consumer is cancelled
+ *
+ * {@see RabbitMQ}.
+ */
+ public static boolean DEFAULT_AUTO_DELETE = false;
+
+ /**
+ * default rabbitmq delivery mode This is a property of the message When set to 1 the will be
+ * non persistent and 2 will be persistent {@see Consumer Prefetch}.
+ */
+ public static int DEFAULT_BATCH_SIZE = 1;
+
+ /**
+ * default rabbitmq delivery mode This is a property of the amqp implementation which sets teh
+ * polling time to drain the in-memory queue.
+ */
+ public static int DEFAULT_POLL_TIME_MS = 100;
+
+ // info channel messages.
+ public static final String INFO_CHANNEL_BORROW_SUCCESS =
+ "Borrowed the channel object from the channel pool for " + "the connection type [%s]";
+ public static final String INFO_CHANNEL_RETURN_SUCCESS =
+ "Returned the borrowed channel object to the pool for " + "the connection type [%s]";
+ public static final String INFO_CHANNEL_CREATION_SUCCESS =
+ "Channels are not available in the pool. Created a"
+ + " channel for the connection type [%s]";
+ public static final String INFO_CHANNEL_RESET_SUCCESS =
+ "No proper channels available in the pool. Created a "
+ + "channel for the connection type [%s]";
+}
diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPSettings.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPSettings.java
new file mode 100644
index 000000000..db18dd9df
--- /dev/null
+++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/AMQPSettings.java
@@ -0,0 +1,315 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.util;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPEventQueueProperties;
+
+import static com.netflix.conductor.contribs.queue.amqp.util.AMQPConfigurations.*;
+
+/**
+ * @author Ritu Parathody
+ */
+public class AMQPSettings {
+
+ private static final Pattern URI_PATTERN =
+ Pattern.compile(
+ "^(?:amqp\\_(queue|exchange))?\\:?(? Example for queue:
+ *
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.util;
+
+public enum ConnectionType {
+ PUBLISHER,
+ SUBSCRIBER
+}
diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/RetryType.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/RetryType.java
new file mode 100644
index 000000000..192c49f25
--- /dev/null
+++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/RetryType.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp.util;
+
+/** RetryType holds the retry type */
+public enum RetryType {
+ REGULARINTERVALS,
+ EXPONENTIALBACKOFF,
+ INCREMENTALINTERVALS
+}
diff --git a/amqp/src/test/java/com/netflix/conductor/contribs/queue/amqp/AMQPEventQueueProviderTest.java b/amqp/src/test/java/com/netflix/conductor/contribs/queue/amqp/AMQPEventQueueProviderTest.java
new file mode 100644
index 000000000..2ca8a781a
--- /dev/null
+++ b/amqp/src/test/java/com/netflix/conductor/contribs/queue/amqp/AMQPEventQueueProviderTest.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp;
+
+import java.time.Duration;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPEventQueueProperties;
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPEventQueueProvider;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPConstants;
+import com.netflix.conductor.core.events.queue.ObservableQueue;
+
+import com.rabbitmq.client.AMQP.PROTOCOL;
+import com.rabbitmq.client.ConnectionFactory;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class AMQPEventQueueProviderTest {
+
+ private AMQPEventQueueProperties properties;
+
+ @Before
+ public void setUp() {
+ properties = mock(AMQPEventQueueProperties.class);
+ when(properties.getBatchSize()).thenReturn(1);
+ when(properties.getPollTimeDuration()).thenReturn(Duration.ofMillis(100));
+ when(properties.getHosts()).thenReturn(ConnectionFactory.DEFAULT_HOST);
+ when(properties.getUsername()).thenReturn(ConnectionFactory.DEFAULT_USER);
+ when(properties.getPassword()).thenReturn(ConnectionFactory.DEFAULT_PASS);
+ when(properties.getVirtualHost()).thenReturn(ConnectionFactory.DEFAULT_VHOST);
+ when(properties.getPort()).thenReturn(PROTOCOL.PORT);
+ when(properties.getConnectionTimeoutInMilliSecs()).thenReturn(60000);
+ when(properties.isUseNio()).thenReturn(false);
+ when(properties.isDurable()).thenReturn(true);
+ when(properties.isExclusive()).thenReturn(false);
+ when(properties.isAutoDelete()).thenReturn(false);
+ when(properties.getContentType()).thenReturn("application/json");
+ when(properties.getContentEncoding()).thenReturn("UTF-8");
+ when(properties.getExchangeType()).thenReturn("topic");
+ when(properties.getDeliveryMode()).thenReturn(2);
+ when(properties.isUseExchange()).thenReturn(true);
+ }
+
+ @Test
+ public void testAMQPEventQueueProvider_defaultconfig_exchange() {
+ String exchangestring =
+ "amqp_exchange:myExchangeName?exchangeType=topic&routingKey=test&deliveryMode=2";
+ AMQPEventQueueProvider eventqProvider =
+ new AMQPEventQueueProvider(properties, "amqp_exchange", true);
+ ObservableQueue queue = eventqProvider.getQueue(exchangestring);
+ assertNotNull(queue);
+ assertEquals(exchangestring, queue.getName());
+ assertEquals(AMQPConstants.AMQP_EXCHANGE_TYPE, queue.getType());
+ }
+
+ @Test
+ public void testAMQPEventQueueProvider_defaultconfig_queue() {
+ String exchangestring =
+ "amqp_queue:myQueueName?deliveryMode=2&durable=false&autoDelete=true&exclusive=true";
+ AMQPEventQueueProvider eventqProvider =
+ new AMQPEventQueueProvider(properties, "amqp_queue", false);
+ ObservableQueue queue = eventqProvider.getQueue(exchangestring);
+ assertNotNull(queue);
+ assertEquals(exchangestring, queue.getName());
+ assertEquals(AMQPConstants.AMQP_QUEUE_TYPE, queue.getType());
+ }
+}
diff --git a/amqp/src/test/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueueTest.java b/amqp/src/test/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueueTest.java
new file mode 100644
index 000000000..1b6139a4a
--- /dev/null
+++ b/amqp/src/test/java/com/netflix/conductor/contribs/queue/amqp/AMQPObservableQueueTest.java
@@ -0,0 +1,911 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp;
+
+import java.io.IOException;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Random;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.mockito.internal.stubbing.answers.DoesNothing;
+import org.mockito.stubbing.OngoingStubbing;
+
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPEventQueueProperties;
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPRetryPattern;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPConstants;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPSettings;
+import com.netflix.conductor.contribs.queue.amqp.util.RetryType;
+import com.netflix.conductor.core.events.queue.Message;
+
+import com.rabbitmq.client.AMQP;
+import com.rabbitmq.client.AMQP.PROTOCOL;
+import com.rabbitmq.client.AMQP.Queue.DeclareOk;
+import com.rabbitmq.client.Address;
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+import com.rabbitmq.client.Consumer;
+import com.rabbitmq.client.Envelope;
+import com.rabbitmq.client.GetResponse;
+import com.rabbitmq.client.impl.AMQImpl;
+import rx.Observable;
+import rx.observers.Subscribers;
+import rx.observers.TestSubscriber;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyMap;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@SuppressWarnings({"rawtypes", "unchecked"})
+public class AMQPObservableQueueTest {
+
+ final int batchSize = 10;
+ final int pollTimeMs = 500;
+
+ Address[] addresses;
+ AMQPEventQueueProperties properties;
+
+ @Before
+ public void setUp() {
+ properties = mock(AMQPEventQueueProperties.class);
+ when(properties.getBatchSize()).thenReturn(1);
+ when(properties.getPollTimeDuration()).thenReturn(Duration.ofMillis(100));
+ when(properties.getHosts()).thenReturn(ConnectionFactory.DEFAULT_HOST);
+ when(properties.getUsername()).thenReturn(ConnectionFactory.DEFAULT_USER);
+ when(properties.getPassword()).thenReturn(ConnectionFactory.DEFAULT_PASS);
+ when(properties.getVirtualHost()).thenReturn(ConnectionFactory.DEFAULT_VHOST);
+ when(properties.getPort()).thenReturn(PROTOCOL.PORT);
+ when(properties.getConnectionTimeoutInMilliSecs()).thenReturn(60000);
+ when(properties.isUseNio()).thenReturn(false);
+ when(properties.isDurable()).thenReturn(true);
+ when(properties.isExclusive()).thenReturn(false);
+ when(properties.isAutoDelete()).thenReturn(false);
+ when(properties.getContentType()).thenReturn("application/json");
+ when(properties.getContentEncoding()).thenReturn("UTF-8");
+ when(properties.getExchangeType()).thenReturn("topic");
+ when(properties.getDeliveryMode()).thenReturn(2);
+ when(properties.isUseExchange()).thenReturn(true);
+ addresses = new Address[] {new Address("localhost", PROTOCOL.PORT)};
+ AMQPConnection.setAMQPConnection(null);
+ }
+
+ List
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.contribs.queue.amqp;
+
+import java.time.Duration;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import com.netflix.conductor.contribs.queue.amqp.config.AMQPEventQueueProperties;
+import com.netflix.conductor.contribs.queue.amqp.util.AMQPSettings;
+
+import com.rabbitmq.client.AMQP.PROTOCOL;
+import com.rabbitmq.client.ConnectionFactory;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class AMQPSettingsTest {
+
+ private AMQPEventQueueProperties properties;
+
+ @Before
+ public void setUp() {
+ properties = mock(AMQPEventQueueProperties.class);
+ when(properties.getBatchSize()).thenReturn(1);
+ when(properties.getPollTimeDuration()).thenReturn(Duration.ofMillis(100));
+ when(properties.getHosts()).thenReturn(ConnectionFactory.DEFAULT_HOST);
+ when(properties.getUsername()).thenReturn(ConnectionFactory.DEFAULT_USER);
+ when(properties.getPassword()).thenReturn(ConnectionFactory.DEFAULT_PASS);
+ when(properties.getVirtualHost()).thenReturn(ConnectionFactory.DEFAULT_VHOST);
+ when(properties.getPort()).thenReturn(PROTOCOL.PORT);
+ when(properties.getConnectionTimeoutInMilliSecs()).thenReturn(60000);
+ when(properties.isUseNio()).thenReturn(false);
+ when(properties.isDurable()).thenReturn(true);
+ when(properties.isExclusive()).thenReturn(false);
+ when(properties.isAutoDelete()).thenReturn(false);
+ when(properties.getContentType()).thenReturn("application/json");
+ when(properties.getContentEncoding()).thenReturn("UTF-8");
+ when(properties.getExchangeType()).thenReturn("topic");
+ when(properties.getDeliveryMode()).thenReturn(2);
+ when(properties.isUseExchange()).thenReturn(true);
+ }
+
+ @Test
+ public void testAMQPSettings_exchange_fromuri_defaultconfig() {
+ String exchangestring =
+ "amqp_exchange:myExchangeName?exchangeType=topic&routingKey=test&deliveryMode=2";
+ AMQPSettings settings = new AMQPSettings(properties);
+ settings.fromURI(exchangestring);
+ assertEquals("topic", settings.getExchangeType());
+ assertEquals("test", settings.getRoutingKey());
+ assertEquals("myExchangeName", settings.getQueueOrExchangeName());
+ }
+
+ @Test
+ public void testAMQPSettings_queue_fromuri_defaultconfig() {
+ String exchangestring =
+ "amqp_queue:myQueueName?deliveryMode=2&durable=false&autoDelete=true&exclusive=true";
+ AMQPSettings settings = new AMQPSettings(properties);
+ settings.fromURI(exchangestring);
+ assertFalse(settings.isDurable());
+ assertTrue(settings.isExclusive());
+ assertTrue(settings.autoDelete());
+ assertEquals(2, settings.getDeliveryMode());
+ assertEquals("myQueueName", settings.getQueueOrExchangeName());
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testAMQPSettings_exchange_fromuri_wrongdeliverymode() {
+ String exchangestring =
+ "amqp_exchange:myExchangeName?exchangeType=topic&routingKey=test&deliveryMode=3";
+ AMQPSettings settings = new AMQPSettings(properties);
+ settings.fromURI(exchangestring);
+ }
+}
diff --git a/annotations-processor/README.md b/annotations-processor/README.md
index 13ec4a3d0..75dfca351 100644
--- a/annotations-processor/README.md
+++ b/annotations-processor/README.md
@@ -1 +1 @@
-[Annotations Processor](docs/docs/reference-docs/annotations-processor.md)
\ No newline at end of file
+Annotation processor is used to generate protobuf files from the annotations.
diff --git a/annotations-processor/build.gradle b/annotations-processor/build.gradle
index 008983429..18844ab09 100644
--- a/annotations-processor/build.gradle
+++ b/annotations-processor/build.gradle
@@ -5,11 +5,11 @@ sourceSets {
dependencies {
implementation project(':conductor-annotations')
- api 'com.google.guava:guava:32.1.2-jre'
- api 'com.squareup:javapoet:1.13.+'
- api 'com.github.jknack:handlebars:4.3.+'
+ api 'com.google.guava:guava:31.1-jre'
+ api 'com.squareup:javapoet:1.13.0'
+ api 'com.github.jknack:handlebars:4.3.1'
api 'com.google.protobuf:protobuf-java:3.21.12'
- api 'javax.annotation:javax.annotation-api:1.3.2'
+ api 'jakarta.annotation:jakarta.annotation-api:2.1.1'
api gradleApi()
exampleImplementation sourceSets.main.output
diff --git a/annotations-processor/dependencies.lock b/annotations-processor/dependencies.lock
deleted file mode 100644
index 1c9fbc411..000000000
--- a/annotations-processor/dependencies.lock
+++ /dev/null
@@ -1,535 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.github.jknack:handlebars": {
- "locked": "4.3.1"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.21.12"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "com.squareup:javapoet": {
- "locked": "1.13.0"
- },
- "javax.annotation:javax.annotation-api": {
- "locked": "1.3.2"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "exampleCompileClasspath": {
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- }
- },
- "exampleRuntimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.13.5"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "1.30"
- }
- },
- "runtimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.github.jknack:handlebars": {
- "locked": "4.3.1"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.21.12"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "com.squareup:javapoet": {
- "locked": "1.13.0"
- },
- "javax.annotation:javax.annotation-api": {
- "locked": "1.3.2"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.github.jknack:handlebars": {
- "locked": "4.3.1"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.21.12"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "com.squareup:javapoet": {
- "locked": "1.13.0"
- },
- "javax.annotation:javax.annotation-api": {
- "locked": "1.3.2"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.github.jknack:handlebars": {
- "locked": "4.3.1"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.21.12"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "com.squareup:javapoet": {
- "locked": "1.13.0"
- },
- "javax.annotation:javax.annotation-api": {
- "locked": "1.3.2"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/annotations-processor/src/example/java/com/example/Example.java b/annotations-processor/src/example/java/com/example/Example.java
index b3c7befe8..f55cfac6e 100644
--- a/annotations-processor/src/example/java/com/example/Example.java
+++ b/annotations-processor/src/example/java/com/example/Example.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/AbstractMessage.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/AbstractMessage.java
index bc92d901f..3794a7ca0 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/AbstractMessage.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/AbstractMessage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Enum.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Enum.java
index 3944bafb1..d1b4564bd 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Enum.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Enum.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Message.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Message.java
index 9dfaf2883..ba6b1122b 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Message.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/Message.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoFile.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoFile.java
index 1bd543a60..e562c0f88 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoFile.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoFile.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGen.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGen.java
index a2550d369..a2716eb3f 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGen.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGen.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -20,7 +20,6 @@
import java.net.URLClassLoader;
import java.util.*;
-import javax.annotation.Generated;
import javax.lang.model.element.Modifier;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
@@ -35,6 +34,7 @@
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.MethodSpec;
import com.squareup.javapoet.TypeSpec;
+import jakarta.annotation.Generated;
public class ProtoGen {
private static final String GENERATOR_NAME =
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTask.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTask.java
index fb411fc4f..d161d6ffb 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTask.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/AbstractType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/AbstractType.java
index fbfa8e72c..6a38fd551 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/AbstractType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/AbstractType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ExternMessageType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ExternMessageType.java
index ed7eaae24..93279d515 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ExternMessageType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ExternMessageType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/GenericType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/GenericType.java
index 5bad20a2f..adf8f4d8f 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/GenericType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/GenericType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ListType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ListType.java
index 921594391..50bbf1c7e 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ListType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ListType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MapType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MapType.java
index fe642fdec..bdcb5bfe0 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MapType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MapType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MessageType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MessageType.java
index d57228773..724817af8 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MessageType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/MessageType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ScalarType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ScalarType.java
index c6958bdd9..afefc788e 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ScalarType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/ScalarType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/TypeMapper.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/TypeMapper.java
index 2363ed365..7e997098f 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/TypeMapper.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/TypeMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/WrappedType.java b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/WrappedType.java
index c6d04e172..409e47dfa 100644
--- a/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/WrappedType.java
+++ b/annotations-processor/src/main/java/com/netflix/conductor/annotationsprocessor/protogen/types/WrappedType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations-processor/src/test/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTest.java b/annotations-processor/src/test/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTest.java
index 0fe7a243b..09f637215 100644
--- a/annotations-processor/src/test/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTest.java
+++ b/annotations-processor/src/test/java/com/netflix/conductor/annotationsprocessor/protogen/ProtoGenTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations/README.md b/annotations/README.md
index aa9ae9fc6..0553d1295 100644
--- a/annotations/README.md
+++ b/annotations/README.md
@@ -1,4 +1,5 @@
# Annotations
+Used for Conductor to convert Java POJs to protobuf files.
- `protogen` Annotations
- Original Author: Vicent MartĂ - https://github.com/vmg
diff --git a/annotations/dependencies.lock b/annotations/dependencies.lock
deleted file mode 100644
index 2e6c00bb1..000000000
--- a/annotations/dependencies.lock
+++ /dev/null
@@ -1,249 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java b/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java
index 1514a3ed8..c07e679f7 100644
--- a/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java
+++ b/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java b/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java
index 25ab478c8..a61bb5ea1 100644
--- a/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java
+++ b/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java b/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java
index d66e4aa43..45fa884f9 100644
--- a/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java
+++ b/annotations/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awss3-storage/README.md b/awss3-storage/README.md
index e69de29bb..9672dd01f 100644
--- a/awss3-storage/README.md
+++ b/awss3-storage/README.md
@@ -0,0 +1,4 @@
+# S3 external storage support
+Used by Conductor to support external payload into S3 blob.
+
+See [https://docs.conductor-oss.org/documentation/advanced/externalpayloadstorage.html](https://docs.conductor-oss.org/documentation/advanced/externalpayloadstorage.html) for more details
diff --git a/awss3-storage/build.gradle b/awss3-storage/build.gradle
index adda2bb42..57e9d4fc3 100644
--- a/awss3-storage/build.gradle
+++ b/awss3-storage/build.gradle
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2023 Conductor authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awss3-storage/dependencies.lock b/awss3-storage/dependencies.lock
deleted file mode 100644
index 311ecc794..000000000
--- a/awss3-storage/dependencies.lock
+++ /dev/null
@@ -1,632 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.amazonaws:aws-java-sdk-s3": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.amazonaws:aws-java-sdk-s3": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.3.8"
- },
- "jakarta.activation:jakarta.activation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.3.3"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "15.4"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.amazonaws:aws-java-sdk-s3": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.amazonaws:aws-java-sdk-s3": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.3.8"
- },
- "jakarta.activation:jakarta.activation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.3.3"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "15.4"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Configuration.java b/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Configuration.java
index 5b8e6b3dc..b14d79395 100644
--- a/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Configuration.java
+++ b/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Configuration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Properties.java b/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Properties.java
index 94a515f72..9c41b4a10 100644
--- a/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Properties.java
+++ b/awss3-storage/src/main/java/com/netflix/conductor/s3/config/S3Properties.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awss3-storage/src/main/java/com/netflix/conductor/s3/storage/S3PayloadStorage.java b/awss3-storage/src/main/java/com/netflix/conductor/s3/storage/S3PayloadStorage.java
index 838ab4088..19ac68d27 100644
--- a/awss3-storage/src/main/java/com/netflix/conductor/s3/storage/S3PayloadStorage.java
+++ b/awss3-storage/src/main/java/com/netflix/conductor/s3/storage/S3PayloadStorage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awssqs-event-queue/dependencies.lock b/awssqs-event-queue/dependencies.lock
deleted file mode 100644
index 3fe9d6ca9..000000000
--- a/awssqs-event-queue/dependencies.lock
+++ /dev/null
@@ -1,656 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.amazonaws:aws-java-sdk-sqs": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "io.reactivex:rxjava": {
- "locked": "1.2.2"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.amazonaws:aws-java-sdk-sqs": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.9.3"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.activation:jakarta.activation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.3.3"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "15.4"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.amazonaws:aws-java-sdk-sqs": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "io.reactivex:rxjava": {
- "locked": "1.2.2"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.amazonaws:aws-java-sdk-sqs": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.9.3"
- },
- "com.google.guava:guava": {
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.activation:jakarta.activation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.3.3"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "15.4"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueConfiguration.java b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueConfiguration.java
index fb3065895..1f4165423 100644
--- a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueConfiguration.java
+++ b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProperties.java b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProperties.java
index 4bd9eb9ba..fbe40eea9 100644
--- a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProperties.java
+++ b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProperties.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProvider.java b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProvider.java
index 2d0b45e21..425012086 100644
--- a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProvider.java
+++ b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/config/SQSEventQueueProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueue.java b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueue.java
index 95a1771b7..5f3e4173b 100644
--- a/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueue.java
+++ b/awssqs-event-queue/src/main/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueue.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/DefaultEventQueueProcessorTest.java b/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/DefaultEventQueueProcessorTest.java
index ab7be3118..1607acf44 100644
--- a/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/DefaultEventQueueProcessorTest.java
+++ b/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/DefaultEventQueueProcessorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueueTest.java b/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueueTest.java
index 7c0d69aa5..39acc6f54 100644
--- a/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueueTest.java
+++ b/awssqs-event-queue/src/test/java/com/netflix/conductor/sqs/eventqueue/SQSObservableQueueTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/azureblob-storage/README.md b/azureblob-storage/README.md
new file mode 100644
index 000000000..e562f1032
--- /dev/null
+++ b/azureblob-storage/README.md
@@ -0,0 +1,45 @@
+# Azure Blob External Storage Module
+
+This module use azure blob to store and retrieve workflows/tasks input/output payload that
+went over the thresholds defined in properties named `conductor.[workflow|task].[input|output].payload.threshold.kb`.
+
+**Warning** Azure Java SDK use libs already present inside `conductor` like `jackson` and `netty`.
+You may encounter deprecated issues, or conflicts and need to adapt the code if the module is not maintained along with `conductor`.
+It has only been tested with **v12.2.0**.
+
+## Configuration
+
+### Usage
+
+Documentation [External Payload Storage]([https://netflix.github.io/conductor/externalpayloadstorage/#azure-blob-storage](https://docs.conductor-oss.org/documentation/advanced/externalpayloadstorage.html))
+
+See [https://docs.conductor-oss.org/documentation/advanced/externalpayloadstorage.html]() for more details
+### Example
+
+```properties
+conductor.additional.modules=com.netflix.conductor.azureblob.AzureBlobModule
+es.set.netty.runtime.available.processors=false
+
+workflow.external.payload.storage=AZURE_BLOB
+workflow.external.payload.storage.azure_blob.connection_string=DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;EndpointSuffix=localhost
+workflow.external.payload.storage.azure_blob.signedurlexpirationseconds=360
+```
+
+## Testing
+
+You can use [Azurite](https://github.com/Azure/Azurite) to simulate an Azure Storage.
+
+### Troubleshoots
+
+* When using **es5 persistance** you will receive an `java.lang.IllegalStateException` because the Netty lib will call `setAvailableProcessors` two times. To resolve this issue you need to set the following system property
+
+```
+es.set.netty.runtime.available.processors=false
+```
+
+If you want to change the default HTTP client of azure sdk, you can use `okhttp` instead of `netty`.
+For that you need to add the following [dependency](https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/storage/azure-storage-blob#default-http-client).
+
+```
+com.azure:azure-core-http-okhttp:${compatible version}
+```
diff --git a/azureblob-storage/build.gradle b/azureblob-storage/build.gradle
new file mode 100644
index 000000000..8e4b4627b
--- /dev/null
+++ b/azureblob-storage/build.gradle
@@ -0,0 +1,8 @@
+dependencies {
+ compileOnly 'org.springframework.boot:spring-boot-starter'
+ implementation project(':conductor-common')
+ implementation project(':conductor-core')
+
+ implementation "com.azure:azure-storage-blob:${revAzureStorageBlobSdk}"
+ implementation "org.apache.commons:commons-lang3"
+}
diff --git a/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/config/AzureBlobConfiguration.java b/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/config/AzureBlobConfiguration.java
new file mode 100644
index 000000000..49c0a2f68
--- /dev/null
+++ b/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/config/AzureBlobConfiguration.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.azureblob.config;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.netflix.conductor.azureblob.storage.AzureBlobPayloadStorage;
+import com.netflix.conductor.common.utils.ExternalPayloadStorage;
+import com.netflix.conductor.core.utils.IDGenerator;
+
+@Configuration(proxyBeanMethods = false)
+@EnableConfigurationProperties(AzureBlobProperties.class)
+@ConditionalOnProperty(name = "conductor.external-payload-storage.type", havingValue = "azureblob")
+public class AzureBlobConfiguration {
+
+ @Bean
+ public ExternalPayloadStorage azureBlobExternalPayloadStorage(
+ IDGenerator idGenerator, AzureBlobProperties properties) {
+ return new AzureBlobPayloadStorage(idGenerator, properties);
+ }
+}
diff --git a/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/config/AzureBlobProperties.java b/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/config/AzureBlobProperties.java
new file mode 100644
index 000000000..3932bd677
--- /dev/null
+++ b/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/config/AzureBlobProperties.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.azureblob.config;
+
+import java.time.Duration;
+import java.time.temporal.ChronoUnit;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.convert.DurationUnit;
+
+@ConfigurationProperties("conductor.external-payload-storage.azureblob")
+public class AzureBlobProperties {
+
+ /** The connection string to be used to connect to Azure Blob storage */
+ private String connectionString = null;
+
+ /** The name of the container where the payloads will be stored */
+ private String containerName = "conductor-payloads";
+
+ /** The endpoint to be used to connect to Azure Blob storage */
+ private String endpoint = null;
+
+ /** The sas token to be used for authenticating requests */
+ private String sasToken = null;
+
+ /** The time for which the shared access signature is valid */
+ @DurationUnit(ChronoUnit.SECONDS)
+ private Duration signedUrlExpirationDuration = Duration.ofSeconds(5);
+
+ /** The path at which the workflow inputs will be stored */
+ private String workflowInputPath = "workflow/input/";
+
+ /** The path at which the workflow outputs will be stored */
+ private String workflowOutputPath = "workflow/output/";
+
+ /** The path at which the task inputs will be stored */
+ private String taskInputPath = "task/input/";
+
+ /** The path at which the task outputs will be stored */
+ private String taskOutputPath = "task/output/";
+
+ public String getConnectionString() {
+ return connectionString;
+ }
+
+ public void setConnectionString(String connectionString) {
+ this.connectionString = connectionString;
+ }
+
+ public String getContainerName() {
+ return containerName;
+ }
+
+ public void setContainerName(String containerName) {
+ this.containerName = containerName;
+ }
+
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ public void setEndpoint(String endpoint) {
+ this.endpoint = endpoint;
+ }
+
+ public String getSasToken() {
+ return sasToken;
+ }
+
+ public void setSasToken(String sasToken) {
+ this.sasToken = sasToken;
+ }
+
+ public Duration getSignedUrlExpirationDuration() {
+ return signedUrlExpirationDuration;
+ }
+
+ public void setSignedUrlExpirationDuration(Duration signedUrlExpirationDuration) {
+ this.signedUrlExpirationDuration = signedUrlExpirationDuration;
+ }
+
+ public String getWorkflowInputPath() {
+ return workflowInputPath;
+ }
+
+ public void setWorkflowInputPath(String workflowInputPath) {
+ this.workflowInputPath = workflowInputPath;
+ }
+
+ public String getWorkflowOutputPath() {
+ return workflowOutputPath;
+ }
+
+ public void setWorkflowOutputPath(String workflowOutputPath) {
+ this.workflowOutputPath = workflowOutputPath;
+ }
+
+ public String getTaskInputPath() {
+ return taskInputPath;
+ }
+
+ public void setTaskInputPath(String taskInputPath) {
+ this.taskInputPath = taskInputPath;
+ }
+
+ public String getTaskOutputPath() {
+ return taskOutputPath;
+ }
+
+ public void setTaskOutputPath(String taskOutputPath) {
+ this.taskOutputPath = taskOutputPath;
+ }
+}
diff --git a/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/storage/AzureBlobPayloadStorage.java b/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/storage/AzureBlobPayloadStorage.java
new file mode 100644
index 000000000..6d1ead96d
--- /dev/null
+++ b/azureblob-storage/src/main/java/com/netflix/conductor/azureblob/storage/AzureBlobPayloadStorage.java
@@ -0,0 +1,230 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.azureblob.storage;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.UncheckedIOException;
+import java.time.OffsetDateTime;
+import java.time.ZoneOffset;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.netflix.conductor.azureblob.config.AzureBlobProperties;
+import com.netflix.conductor.common.run.ExternalStorageLocation;
+import com.netflix.conductor.common.utils.ExternalPayloadStorage;
+import com.netflix.conductor.core.exception.NonTransientException;
+import com.netflix.conductor.core.utils.IDGenerator;
+
+import com.azure.core.exception.UnexpectedLengthException;
+import com.azure.core.util.Context;
+import com.azure.storage.blob.BlobContainerClient;
+import com.azure.storage.blob.BlobContainerClientBuilder;
+import com.azure.storage.blob.models.BlobHttpHeaders;
+import com.azure.storage.blob.models.BlobStorageException;
+import com.azure.storage.blob.sas.BlobSasPermission;
+import com.azure.storage.blob.sas.BlobServiceSasSignatureValues;
+import com.azure.storage.blob.specialized.BlockBlobClient;
+import com.azure.storage.common.Utility;
+import com.azure.storage.common.implementation.credentials.SasTokenCredential;
+
+/**
+ * An implementation of {@link ExternalPayloadStorage} using Azure Blob for storing large JSON
+ * payload data.
+ *
+ * @see Azure Java SDK
+ */
+public class AzureBlobPayloadStorage implements ExternalPayloadStorage {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(AzureBlobPayloadStorage.class);
+ private static final String CONTENT_TYPE = "application/json";
+
+ private final IDGenerator idGenerator;
+ private final String workflowInputPath;
+ private final String workflowOutputPath;
+ private final String taskInputPath;
+ private final String taskOutputPath;
+
+ private final BlobContainerClient blobContainerClient;
+ private final long expirationSec;
+ private final SasTokenCredential sasTokenCredential;
+
+ public AzureBlobPayloadStorage(IDGenerator idGenerator, AzureBlobProperties properties) {
+ this.idGenerator = idGenerator;
+ workflowInputPath = properties.getWorkflowInputPath();
+ workflowOutputPath = properties.getWorkflowOutputPath();
+ taskInputPath = properties.getTaskInputPath();
+ taskOutputPath = properties.getTaskOutputPath();
+ expirationSec = properties.getSignedUrlExpirationDuration().getSeconds();
+ String connectionString = properties.getConnectionString();
+ String containerName = properties.getContainerName();
+ String endpoint = properties.getEndpoint();
+ String sasToken = properties.getSasToken();
+
+ BlobContainerClientBuilder blobContainerClientBuilder = new BlobContainerClientBuilder();
+ if (connectionString != null) {
+ blobContainerClientBuilder.connectionString(connectionString);
+ sasTokenCredential = null;
+ } else if (endpoint != null) {
+ blobContainerClientBuilder.endpoint(endpoint);
+ if (sasToken != null) {
+ sasTokenCredential = SasTokenCredential.fromSasTokenString(sasToken);
+ blobContainerClientBuilder.sasToken(sasTokenCredential.getSasToken());
+ } else {
+ sasTokenCredential = null;
+ }
+ } else {
+ String msg = "Missing property for connectionString OR endpoint";
+ LOGGER.error(msg);
+ throw new NonTransientException(msg);
+ }
+ blobContainerClient = blobContainerClientBuilder.containerName(containerName).buildClient();
+ }
+
+ /**
+ * @param operation the type of {@link Operation} to be performed
+ * @param payloadType the {@link PayloadType} that is being accessed
+ * @return a {@link ExternalStorageLocation} object which contains the pre-signed URL and the
+ * azure blob name for the json payload
+ */
+ @Override
+ public ExternalStorageLocation getLocation(
+ Operation operation, PayloadType payloadType, String path) {
+ try {
+ ExternalStorageLocation externalStorageLocation = new ExternalStorageLocation();
+
+ String objectKey;
+ if (StringUtils.isNotBlank(path)) {
+ objectKey = path;
+ } else {
+ objectKey = getObjectKey(payloadType);
+ }
+ externalStorageLocation.setPath(objectKey);
+
+ BlockBlobClient blockBlobClient =
+ blobContainerClient.getBlobClient(objectKey).getBlockBlobClient();
+ String blobUrl = Utility.urlDecode(blockBlobClient.getBlobUrl());
+
+ if (sasTokenCredential != null) {
+ blobUrl = blobUrl + "?" + sasTokenCredential.getSasToken();
+ } else {
+ BlobSasPermission blobSASPermission = new BlobSasPermission();
+ if (operation.equals(Operation.READ)) {
+ blobSASPermission.setReadPermission(true);
+ } else if (operation.equals(Operation.WRITE)) {
+ blobSASPermission.setWritePermission(true);
+ blobSASPermission.setCreatePermission(true);
+ }
+ BlobServiceSasSignatureValues blobServiceSasSignatureValues =
+ new BlobServiceSasSignatureValues(
+ OffsetDateTime.now(ZoneOffset.UTC).plusSeconds(expirationSec),
+ blobSASPermission);
+ blobUrl =
+ blobUrl + "?" + blockBlobClient.generateSas(blobServiceSasSignatureValues);
+ }
+
+ externalStorageLocation.setUri(blobUrl);
+ return externalStorageLocation;
+ } catch (BlobStorageException e) {
+ String msg = "Error communicating with Azure";
+ LOGGER.error(msg, e);
+ throw new NonTransientException(msg, e);
+ }
+ }
+
+ /**
+ * Uploads the payload to the given azure blob name. It is expected that the caller retrieves
+ * the blob name using {@link #getLocation(Operation, PayloadType, String)} before making this
+ * call.
+ *
+ * @param path the name of the blob to be uploaded
+ * @param payload an {@link InputStream} containing the json payload which is to be uploaded
+ * @param payloadSize the size of the json payload in bytes
+ */
+ @Override
+ public void upload(String path, InputStream payload, long payloadSize) {
+ try {
+ BlockBlobClient blockBlobClient =
+ blobContainerClient.getBlobClient(path).getBlockBlobClient();
+ BlobHttpHeaders blobHttpHeaders = new BlobHttpHeaders().setContentType(CONTENT_TYPE);
+ blockBlobClient.uploadWithResponse(
+ payload,
+ payloadSize,
+ blobHttpHeaders,
+ null,
+ null,
+ null,
+ null,
+ null,
+ Context.NONE);
+ } catch (BlobStorageException | UncheckedIOException | UnexpectedLengthException e) {
+ String msg = "Error communicating with Azure";
+ LOGGER.error(msg, e);
+ throw new NonTransientException(msg, e);
+ }
+ }
+
+ /**
+ * Downloads the payload stored in an azure blob.
+ *
+ * @param path the path of the blob
+ * @return an input stream containing the contents of the object Caller is expected to close the
+ * input stream.
+ */
+ @Override
+ public InputStream download(String path) {
+ try {
+ BlockBlobClient blockBlobClient =
+ blobContainerClient.getBlobClient(path).getBlockBlobClient();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ // Avoid another call to the api to get the blob size
+ // ByteArrayOutputStream outputStream = new
+ // ByteArrayOutputStream(blockBlobClient.getProperties().value().blobSize());
+ blockBlobClient.download(outputStream);
+ return new ByteArrayInputStream(outputStream.toByteArray());
+ } catch (BlobStorageException | UncheckedIOException | NullPointerException e) {
+ String msg = "Error communicating with Azure";
+ LOGGER.error(msg, e);
+ throw new NonTransientException(msg, e);
+ }
+ }
+
+ /**
+ * Build path on external storage. Copied from S3PayloadStorage.
+ *
+ * @param payloadType the {@link PayloadType} which will determine the base path of the object
+ * @return External Storage path
+ */
+ private String getObjectKey(PayloadType payloadType) {
+ StringBuilder stringBuilder = new StringBuilder();
+ switch (payloadType) {
+ case WORKFLOW_INPUT:
+ stringBuilder.append(workflowInputPath);
+ break;
+ case WORKFLOW_OUTPUT:
+ stringBuilder.append(workflowOutputPath);
+ break;
+ case TASK_INPUT:
+ stringBuilder.append(taskInputPath);
+ break;
+ case TASK_OUTPUT:
+ stringBuilder.append(taskOutputPath);
+ break;
+ }
+ stringBuilder.append(idGenerator.generate()).append(".json");
+ return stringBuilder.toString();
+ }
+}
diff --git a/azureblob-storage/src/test/java/com/netflix/conductor/azureblob/storage/AzureBlobPayloadStorageTest.java b/azureblob-storage/src/test/java/com/netflix/conductor/azureblob/storage/AzureBlobPayloadStorageTest.java
new file mode 100644
index 000000000..2935f609d
--- /dev/null
+++ b/azureblob-storage/src/test/java/com/netflix/conductor/azureblob/storage/AzureBlobPayloadStorageTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.azureblob.storage;
+
+import java.time.Duration;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.netflix.conductor.azureblob.config.AzureBlobProperties;
+import com.netflix.conductor.common.run.ExternalStorageLocation;
+import com.netflix.conductor.common.utils.ExternalPayloadStorage;
+import com.netflix.conductor.core.exception.NonTransientException;
+import com.netflix.conductor.core.utils.IDGenerator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+public class AzureBlobPayloadStorageTest {
+
+ private AzureBlobProperties properties;
+
+ private IDGenerator idGenerator;
+
+ @Before
+ public void setUp() {
+ properties = mock(AzureBlobProperties.class);
+ idGenerator = new IDGenerator();
+ when(properties.getConnectionString()).thenReturn(null);
+ when(properties.getContainerName()).thenReturn("conductor-payloads");
+ when(properties.getEndpoint()).thenReturn(null);
+ when(properties.getSasToken()).thenReturn(null);
+ when(properties.getSignedUrlExpirationDuration()).thenReturn(Duration.ofSeconds(5));
+ when(properties.getWorkflowInputPath()).thenReturn("workflow/input/");
+ when(properties.getWorkflowOutputPath()).thenReturn("workflow/output/");
+ when(properties.getTaskInputPath()).thenReturn("task/input");
+ when(properties.getTaskOutputPath()).thenReturn("task/output/");
+ }
+
+ /** Dummy credentials Azure SDK doesn't work with Azurite since it cleans parameters */
+ private final String azuriteConnectionString =
+ "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;EndpointSuffix=localhost";
+
+ @Rule public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void testNoStorageAccount() {
+ expectedException.expect(NonTransientException.class);
+ new AzureBlobPayloadStorage(idGenerator, properties);
+ }
+
+ @Test
+ public void testUseConnectionString() {
+ when(properties.getConnectionString()).thenReturn(azuriteConnectionString);
+ new AzureBlobPayloadStorage(idGenerator, properties);
+ }
+
+ @Test
+ public void testUseEndpoint() {
+ String azuriteEndpoint = "http://127.0.0.1:10000/";
+ when(properties.getEndpoint()).thenReturn(azuriteEndpoint);
+ new AzureBlobPayloadStorage(idGenerator, properties);
+ }
+
+ @Test
+ public void testGetLocationFixedPath() {
+ when(properties.getConnectionString()).thenReturn(azuriteConnectionString);
+ AzureBlobPayloadStorage azureBlobPayloadStorage =
+ new AzureBlobPayloadStorage(idGenerator, properties);
+ String path = "somewhere";
+ ExternalStorageLocation externalStorageLocation =
+ azureBlobPayloadStorage.getLocation(
+ ExternalPayloadStorage.Operation.READ,
+ ExternalPayloadStorage.PayloadType.WORKFLOW_INPUT,
+ path);
+ assertNotNull(externalStorageLocation);
+ assertEquals(path, externalStorageLocation.getPath());
+ assertNotNull(externalStorageLocation.getUri());
+ }
+
+ private void testGetLocation(
+ AzureBlobPayloadStorage azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation operation,
+ ExternalPayloadStorage.PayloadType payloadType,
+ String expectedPath) {
+ ExternalStorageLocation externalStorageLocation =
+ azureBlobPayloadStorage.getLocation(operation, payloadType, null);
+ assertNotNull(externalStorageLocation);
+ assertNotNull(externalStorageLocation.getPath());
+ assertTrue(externalStorageLocation.getPath().startsWith(expectedPath));
+ assertNotNull(externalStorageLocation.getUri());
+ assertTrue(externalStorageLocation.getUri().contains(expectedPath));
+ }
+
+ @Test
+ public void testGetAllLocations() {
+ when(properties.getConnectionString()).thenReturn(azuriteConnectionString);
+ AzureBlobPayloadStorage azureBlobPayloadStorage =
+ new AzureBlobPayloadStorage(idGenerator, properties);
+
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.READ,
+ ExternalPayloadStorage.PayloadType.WORKFLOW_INPUT,
+ properties.getWorkflowInputPath());
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.READ,
+ ExternalPayloadStorage.PayloadType.WORKFLOW_OUTPUT,
+ properties.getWorkflowOutputPath());
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.READ,
+ ExternalPayloadStorage.PayloadType.TASK_INPUT,
+ properties.getTaskInputPath());
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.READ,
+ ExternalPayloadStorage.PayloadType.TASK_OUTPUT,
+ properties.getTaskOutputPath());
+
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.WRITE,
+ ExternalPayloadStorage.PayloadType.WORKFLOW_INPUT,
+ properties.getWorkflowInputPath());
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.WRITE,
+ ExternalPayloadStorage.PayloadType.WORKFLOW_OUTPUT,
+ properties.getWorkflowOutputPath());
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.WRITE,
+ ExternalPayloadStorage.PayloadType.TASK_INPUT,
+ properties.getTaskInputPath());
+ testGetLocation(
+ azureBlobPayloadStorage,
+ ExternalPayloadStorage.Operation.WRITE,
+ ExternalPayloadStorage.PayloadType.TASK_OUTPUT,
+ properties.getTaskOutputPath());
+ }
+}
diff --git a/build.gradle b/build.gradle
index d99542949..c6ffda75d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,34 +8,22 @@ buildscript {
}
}
dependencies {
- classpath 'com.netflix.nebula:gradle-extra-configurations-plugin:10.0.0'
- classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.7.16'
+ classpath 'org.springframework.boot:spring-boot-gradle-plugin:3.1.4'
classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.+'
}
}
plugins {
- id 'io.spring.dependency-management' version '1.1.3'
+ id 'io.spring.dependency-management' version '1.0.13.RELEASE'
id 'java'
id 'application'
- id 'jacoco'
- id 'com.netflix.nebula.netflixoss' version '11.3.2'
- id 'org.sonarqube' version '3.4.0.2513'
+ id 'maven-publish'
+ id 'signing'
+ id 'java-library'
+ id "com.diffplug.spotless" version "6.25.0"
+ id 'org.springframework.boot' version '3.3.0'
}
-/*
- * Copyright 2021 Netflix, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- */
-
// Establish version and status
ext.githubProjectName = rootProject.name // Change if github project name is not the same as the root project's name
@@ -45,9 +33,9 @@ subprojects {
apply from: "$rootDir/dependencies.gradle"
apply from: "$rootDir/springboot-bom-overrides.gradle"
+apply from: "$rootDir/deploy.gradle"
allprojects {
- apply plugin: 'com.netflix.nebula.netflixoss'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'java-library'
apply plugin: 'project-report'
@@ -57,211 +45,68 @@ allprojects {
languageVersion = JavaLanguageVersion.of(17)
}
}
-
- group = 'com.netflix.conductor'
-
- configurations.all {
- exclude group: 'ch.qos.logback', module: 'logback-classic'
- exclude group: 'ch.qos.logback', module: 'logback-core'
- exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
- exclude group: 'org.slf4j', module: 'slf4j-log4j12'
- resolutionStrategy {
- force 'org.codehaus.jettison:jettison:1.5.4'
- force "org.apache.commons:commons-compress:${revCommonsCompress}"
+
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+
+ group = 'org.conductoross'
+
+ configurations {
+ all {
+ exclude group: 'ch.qos.logback', module: 'logback-classic'
+ exclude group: 'ch.qos.logback', module: 'logback-core'
+ exclude group: 'org.apache.logging.log4j', module: 'log4j-to-slf4j'
+ exclude group: 'org.slf4j', module: 'slf4j-log4j12'
+
+ resolutionStrategy.eachDependency { details ->
+ if (details.requested.group.startsWith('com.fasterxml.jackson.') ) {
+ details.useVersion "2.15.2"
+ }
+ }
}
}
repositories {
mavenCentral()
-
- // oss-candidate for -rc.* verions:
- maven {
- url "https://artifactory-oss.prod.netflix.net/artifactory/maven-oss-candidates"
- }
-
- /**
- * This repository locates artifacts that don't exist in maven central but we had to backup from jcenter
- * The exclusiveContent
- */
- exclusiveContent {
- forRepository {
- maven {
- url "https://artifactory-oss.prod.netflix.net/artifactory/required-jcenter-modules-backup"
- }
- }
- filter {
- includeGroupByRegex "com\\.github\\.vmg.*"
- }
- }
}
dependencyManagement {
imports {
- // dependency versions for the BOM can be found at https://docs.spring.io/spring-boot/docs/2.7.3/reference/htmlsingle/#appendix.dependency-versions
+ // dependency versions for the BOM can be found at https://docs.spring.io/spring-boot/docs/3.1.4/reference/htmlsingle/#appendix.dependency-versions
mavenBom(SpringBootPlugin.BOM_COORDINATES)
}
}
dependencies {
- implementation('org.apache.logging.log4j:log4j-core') {
- version {
- // this is the preferred version this library will use
- prefer '2.17.2'
- // the strict bounds, effectively allowing any 2.x version greater than 2.17.2
- // could also remove the upper bound entirely if we wanted too
- strictly '[2.17.2,3.0)'
- }
- }
- implementation('org.apache.logging.log4j:log4j-api') {
- version {
- // this is the preferred version this library will use
- prefer '2.17.2'
- // the strict bounds, effectively allowing any 2.x version greater than 2.17.2
- // could also remove the upper bound entirely if we wanted too
- strictly '[2.17.2,3.0)'
- }
- }
- implementation('org.apache.logging.log4j:log4j-slf4j-impl') {
- version {
- // this is the preferred version this library will use
- prefer '2.17.2'
- // the strict bounds, effectively allowing any 2.x version greater than 2.17.2
- // could also remove the upper bound entirely if we wanted too
- strictly '[2.17.2,3.0)'
- }
- }
- implementation('org.apache.logging.log4j:log4j-jul') {
- version {
- // this is the preferred version this library will use
- prefer '2.17.2'
- // the strict bounds, effectively allowing any 2.x version greater than 2.17.2
- // could also remove the upper bound entirely if we wanted too
- strictly '[2.17.2,3.0)'
- }
- }
- implementation('org.apache.logging.log4j:log4j-web') {
- version {
- // this is the preferred version this library will use
- prefer '2.17.2'
- // the strict bounds, effectively allowing any 2.x version greater than 2.17.2
- // could also remove the upper bound entirely if we wanted too
- strictly '[2.17.2,3.0)'
- }
- }
- implementation('org.yaml:snakeyaml') {
- version {
- // this is the preferred version this library will use
- prefer '2.0'
- // the strict bounds, effectively allowing any 2.x version between 2.0 and 2.1
- strictly '[2.0,2.1)'
- }
- }
- implementation('com.fasterxml.jackson.core:jackson-core') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.core:jackson-databind') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.dataformat:jackson-dataformat-yaml') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.core:jackson-annotations') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.dataformat:jackson-dataformat-smile') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.dataformat:jackson-dataformat-cbor') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.datatype:jackson-datatype-jdk8') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.datatype:jackson-datatype-joda') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.datatype:jackson-datatype-jsr310') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
- implementation('com.fasterxml.jackson.module:jackson-module-afterburner') {
- version {
- // this is the preferred version this library will use
- prefer '2.15.0'
- // the strict bounds, effectively allowing any 2.15.x version between 2.15.0 and 2.15.2
- strictly '[2.15.0,2.15.2)'
- }
- }
implementation('org.apache.logging.log4j:log4j-core')
implementation('org.apache.logging.log4j:log4j-api')
implementation('org.apache.logging.log4j:log4j-slf4j-impl')
implementation('org.apache.logging.log4j:log4j-jul')
- implementation('org.apache.logging.log4j:log4j-web')
+ implementation('org.apache.logging.log4j:log4j-web')
+ implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
+ compileOnly 'org.projectlombok:lombok:1.18.34'
+
+ annotationProcessor 'org.projectlombok:lombok:1.18.34'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
- testImplementation('org.springframework.boot:spring-boot-starter-test') {
- exclude group: 'org.yaml', module: 'snakeyaml'
- }
+ testImplementation('org.springframework.boot:spring-boot-starter-test')
testImplementation('org.springframework.boot:spring-boot-starter-log4j2')
testImplementation 'junit:junit'
testImplementation "org.junit.vintage:junit-vintage-engine"
+ testAnnotationProcessor 'org.projectlombok:lombok:1.18.34'
- // Needed for build to work on m1/m2 macs
- testImplementation 'net.java.dev.jna:jna:5.13.0'
+ //Locks for the dependecies
+ implementation('org.codehaus.jettison:jettison') {
+ version {
+ strictly '1.5.4'
+ }
+ }
+ implementation('org.apache.tomcat.embed:tomcat-embed-core') {
+ version {
+ strictly '10.1.25'
+ }
+ }
}
-
// processes additional configuration metadata json file as described here
// https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/appendix-configuration-metadata.html#configuration-metadata-additional-metadata
compileJava.inputs.files(processResources)
@@ -275,6 +120,9 @@ allprojects {
showStandardStreams = false
}
}
+ bootJar {
+ enabled = false
+ }
}
// all client and their related modules are published with Java 17 compatibility
@@ -286,26 +134,10 @@ allprojects {
}
}
-jacocoTestReport {
- reports {
- html.required = true
- xml.required = true
- csv.required = false
- }
-}
-
task server {
dependsOn ':conductor-server:bootRun'
}
-sonarqube {
- properties {
- property "sonar.projectKey", "com.netflix.conductor:conductor"
- property "sonar.organization", "netflix"
- property "sonar.host.url", "https://sonarcloud.io"
- }
-}
-
configure(allprojects - project(':conductor-grpc')) {
apply plugin: 'com.diffplug.spotless'
@@ -328,4 +160,4 @@ configure(allprojects - project(':conductor-grpc')) {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/cassandra-persistence/build.gradle b/cassandra-persistence/build.gradle
index 6fee6f8ff..af1e8be2d 100644
--- a/cassandra-persistence/build.gradle
+++ b/cassandra-persistence/build.gradle
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2023 Conductor authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -23,7 +23,7 @@ dependencies {
testImplementation project(':conductor-core').sourceSets.test.output
testImplementation project(':conductor-common').sourceSets.test.output
- testImplementation "org.codehaus.groovy:groovy-all:${revGroovy}"
+ testImplementation "org.apache.groovy:groovy-all:${revGroovy}"
testImplementation "org.spockframework:spock-core:${revSpock}"
testImplementation "org.spockframework:spock-spring:${revSpock}"
testImplementation "org.testcontainers:spock:${revTestContainer}"
diff --git a/cassandra-persistence/dependencies.lock b/cassandra-persistence/dependencies.lock
deleted file mode 100644
index 18ff44084..000000000
--- a/cassandra-persistence/dependencies.lock
+++ /dev/null
@@ -1,665 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.datastax.cassandra:cassandra-driver-core": {
- "locked": "3.10.2"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.datastax.cassandra:cassandra-driver-core": {
- "locked": "3.10.2"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.3.8"
- },
- "jakarta.activation:jakarta.activation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.3.3"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "15.4"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.datastax.cassandra:cassandra-driver-core": {
- "locked": "3.10.2"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.codehaus.groovy:groovy-all": {
- "locked": "3.0.19"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.spockframework:spock-core": {
- "locked": "2.3-groovy-3.0"
- },
- "org.spockframework:spock-spring": {
- "locked": "2.3-groovy-3.0"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.testcontainers:cassandra": {
- "locked": "1.19.1"
- },
- "org.testcontainers:spock": {
- "locked": "1.19.1"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.datastax.cassandra:cassandra-driver-core": {
- "locked": "3.10.2"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-core": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.3.8"
- },
- "jakarta.activation:jakarta.activation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "1.2.2"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.3.3"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.17.2"
- },
- "org.codehaus.groovy:groovy-all": {
- "locked": "3.0.19"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "15.4"
- },
- "org.spockframework:spock-core": {
- "locked": "2.3-groovy-3.0"
- },
- "org.spockframework:spock-spring": {
- "locked": "2.3-groovy-3.0"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.testcontainers:cassandra": {
- "locked": "1.19.1"
- },
- "org.testcontainers:spock": {
- "locked": "1.19.1"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-core"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraConfiguration.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraConfiguration.java
index 14c3c022b..f415aa55f 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraConfiguration.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraProperties.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraProperties.java
index 28d3eee97..37ca274de 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraProperties.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/CassandraProperties.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableEventHandlerDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableEventHandlerDAO.java
index 6f4b8bee1..4973e811e 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableEventHandlerDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableEventHandlerDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -20,8 +20,6 @@
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.Cache;
@@ -36,6 +34,8 @@
import com.netflix.conductor.dao.EventHandlerDAO;
import com.netflix.conductor.metrics.Monitors;
+import jakarta.annotation.PostConstruct;
+
import static com.netflix.conductor.cassandra.config.cache.CachingConfig.EVENT_HANDLER_CACHE;
@Trace
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableMetadataDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableMetadataDAO.java
index 256512ea4..7ccdeb96a 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableMetadataDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CacheableMetadataDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -20,8 +20,6 @@
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
-import javax.annotation.PostConstruct;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.Cache;
@@ -38,6 +36,8 @@
import com.netflix.conductor.dao.MetadataDAO;
import com.netflix.conductor.metrics.Monitors;
+import jakarta.annotation.PostConstruct;
+
import static com.netflix.conductor.cassandra.config.cache.CachingConfig.TASK_DEF_CACHE;
@Trace
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CachingConfig.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CachingConfig.java
index bd0f178f5..6255ce47e 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CachingConfig.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/config/cache/CachingConfig.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraBaseDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraBaseDAO.java
index b327c18fb..e6fb4b27a 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraBaseDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraBaseDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java
index 4fa72a2ea..db6e1fadf 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java
index ce564af0a..6ced38b8d 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraExecutionDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraMetadataDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraMetadataDAO.java
index 90ff3ed4a..9c6de6438 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraMetadataDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraMetadataDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraPollDataDAO.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraPollDataDAO.java
index 235dd44f4..8e7e4d1e3 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraPollDataDAO.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/dao/CassandraPollDataDAO.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Constants.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Constants.java
index 473c23132..1d815ae62 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Constants.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Constants.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Statements.java b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Statements.java
index 68fe3b242..63e6b4a06 100644
--- a/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Statements.java
+++ b/cassandra-persistence/src/main/java/com/netflix/conductor/cassandra/util/Statements.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAOSpec.groovy b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAOSpec.groovy
index 214f3722d..e0d437d7b 100644
--- a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAOSpec.groovy
+++ b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraEventHandlerDAOSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraExecutionDAOSpec.groovy b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraExecutionDAOSpec.groovy
index 14f612967..e438f4a88 100644
--- a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraExecutionDAOSpec.groovy
+++ b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraExecutionDAOSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -403,44 +403,6 @@ class CassandraExecutionDAOSpec extends CassandraSpec {
eventExecutionList != null && eventExecutionList.empty
}
- def "verify workflow serialization"() {
- given: 'define a workflow'
- String workflowId = new IDGenerator().generate()
- WorkflowTask workflowTask = new WorkflowTask(taskDefinition: new TaskDef(concurrentExecLimit: 2))
- WorkflowDef workflowDef = new WorkflowDef(name: UUID.randomUUID().toString(), version: 1, tasks: [workflowTask])
- WorkflowModel workflow = new WorkflowModel(workflowDefinition: workflowDef, workflowId: workflowId, status: WorkflowModel.Status.RUNNING, createTime: System.currentTimeMillis())
-
- when: 'serialize workflow'
- def workflowJson = objectMapper.writeValueAsString(workflow)
-
- then:
- !workflowJson.contains('failedReferenceTaskNames')
- // workflowTask
- !workflowJson.contains('decisionCases')
- !workflowJson.contains('defaultCase')
- !workflowJson.contains('forkTasks')
- !workflowJson.contains('joinOn')
- !workflowJson.contains('defaultExclusiveJoinTask')
- !workflowJson.contains('loopOver')
- }
-
- def "verify task serialization"() {
- given: 'define a workflow and tasks for this workflow'
- String workflowId = new IDGenerator().generate()
- WorkflowTask workflowTask = new WorkflowTask(taskDefinition: new TaskDef(concurrentExecLimit: 2))
- TaskModel task = new TaskModel(workflowInstanceId: workflowId, taskType: UUID.randomUUID().toString(), referenceTaskName: UUID.randomUUID().toString(), status: TaskModel.Status.SCHEDULED, taskId: new IDGenerator().generate(), workflowTask: workflowTask)
-
- when: 'serialize task'
- def taskJson = objectMapper.writeValueAsString(task)
-
- then:
- !taskJson.contains('decisionCases')
- !taskJson.contains('defaultCase')
- !taskJson.contains('forkTasks')
- !taskJson.contains('joinOn')
- !taskJson.contains('defaultExclusiveJoinTask')
- }
-
def "serde of workflow with large number of tasks"() {
given: 'create a workflow and tasks for this workflow'
String workflowId = new IDGenerator().generate()
diff --git a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraMetadataDAOSpec.groovy b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraMetadataDAOSpec.groovy
index fd8afacc5..498435cdc 100644
--- a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraMetadataDAOSpec.groovy
+++ b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraMetadataDAOSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraSpec.groovy b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraSpec.groovy
index a5393210b..935788e89 100644
--- a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraSpec.groovy
+++ b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/dao/CassandraSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/util/StatementsSpec.groovy b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/util/StatementsSpec.groovy
index f826a3620..8517e7e4a 100644
--- a/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/util/StatementsSpec.groovy
+++ b/cassandra-persistence/src/test/groovy/com/netflix/conductor/cassandra/util/StatementsSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client-spring/dependencies.lock b/client-spring/dependencies.lock
deleted file mode 100644
index 9602d6246..000000000
--- a/client-spring/dependencies.lock
+++ /dev/null
@@ -1,709 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-client": {
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-java-sdk": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "locked": "1.10.10"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "cglib:cglib": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "3.3.0"
- },
- "com.amazonaws:aws-java-sdk-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.google.guava:guava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-client": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-java-sdk": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "1.10.10"
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "0.122.0"
- },
- "com.sun.jersey:jersey-client": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "1.19.4"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "2.7"
- },
- "javax.ws.rs:javax.ws.rs-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.1.1"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.glassfish.jersey.core:jersey-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.35"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "15.4"
- },
- "org.slf4j:slf4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "1.7.36"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-client": {
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.conductor:conductor-java-sdk": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "locked": "1.10.10"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "cglib:cglib": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "3.3.0"
- },
- "com.amazonaws:aws-java-sdk-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.15.0"
- },
- "com.google.guava:guava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-client": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-java-sdk": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "1.10.10"
- },
- "com.netflix.spectator:spectator-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "0.122.0"
- },
- "com.sun.jersey:jersey-client": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "1.19.4"
- },
- "commons-io:commons-io": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "2.7"
- },
- "javax.ws.rs:javax.ws.rs-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.1.1"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.17.2"
- },
- "org.glassfish.jersey.core:jersey-common": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.35"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "15.4"
- },
- "org.slf4j:slf4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-client"
- ],
- "locked": "1.7.36"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-client",
- "com.netflix.conductor:conductor-common",
- "com.netflix.conductor:conductor-java-sdk"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/client-spring/src/main/java/com/netflix/conductor/client/spring/ClientProperties.java b/client-spring/src/main/java/com/netflix/conductor/client/spring/ClientProperties.java
index 55c82e576..87b13cbfe 100644
--- a/client-spring/src/main/java/com/netflix/conductor/client/spring/ClientProperties.java
+++ b/client-spring/src/main/java/com/netflix/conductor/client/spring/ClientProperties.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorClientAutoConfiguration.java b/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorClientAutoConfiguration.java
index a730f24eb..0219edbf1 100644
--- a/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorClientAutoConfiguration.java
+++ b/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorClientAutoConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorWorkerAutoConfiguration.java b/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorWorkerAutoConfiguration.java
index 94d69bbde..dd6983f33 100644
--- a/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorWorkerAutoConfiguration.java
+++ b/client-spring/src/main/java/com/netflix/conductor/client/spring/ConductorWorkerAutoConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client-spring/src/main/java/com/netflix/conductor/client/spring/SpringWorkerConfiguration.java b/client-spring/src/main/java/com/netflix/conductor/client/spring/SpringWorkerConfiguration.java
index 6d44e779c..231bf92e4 100644
--- a/client-spring/src/main/java/com/netflix/conductor/client/spring/SpringWorkerConfiguration.java
+++ b/client-spring/src/main/java/com/netflix/conductor/client/spring/SpringWorkerConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client-spring/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/client-spring/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 000000000..4cf1dd0b4
--- /dev/null
+++ b/client-spring/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.netflix.conductor.client.spring.ConductorClientAutoConfiguration
\ No newline at end of file
diff --git a/client-spring/src/test/java/com/netflix/conductor/client/spring/ExampleClient.java b/client-spring/src/test/java/com/netflix/conductor/client/spring/ExampleClient.java
index 772c04dc0..4bca46e97 100644
--- a/client-spring/src/test/java/com/netflix/conductor/client/spring/ExampleClient.java
+++ b/client-spring/src/test/java/com/netflix/conductor/client/spring/ExampleClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client-spring/src/test/java/com/netflix/conductor/client/spring/Workers.java b/client-spring/src/test/java/com/netflix/conductor/client/spring/Workers.java
index d28bf0c8d..8f1fb1a44 100644
--- a/client-spring/src/test/java/com/netflix/conductor/client/spring/Workers.java
+++ b/client-spring/src/test/java/com/netflix/conductor/client/spring/Workers.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/build.gradle b/client/build.gradle
index b16dd4e18..2ffd092ed 100644
--- a/client/build.gradle
+++ b/client/build.gradle
@@ -40,7 +40,7 @@ dependencies {
testImplementation "org.powermock:powermock-module-junit4:${revPowerMock}"
testImplementation "org.powermock:powermock-api-mockito2:${revPowerMock}"
- testImplementation "org.codehaus.groovy:groovy-all:${revGroovy}"
+ testImplementation "org.apache.groovy:groovy-all:${revGroovy}"
testImplementation "org.spockframework:spock-core:${revSpock}"
testImplementation "org.spockframework:spock-spring:${revSpock}"
}
diff --git a/client/dependencies.lock b/client/dependencies.lock
deleted file mode 100644
index 26b7763be..000000000
--- a/client/dependencies.lock
+++ /dev/null
@@ -1,580 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.amazonaws:aws-java-sdk-core": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "locked": "1.10.10"
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.sun.jersey:jersey-client": {
- "locked": "1.19.4"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "javax.ws.rs:javax.ws.rs-api": {
- "locked": "2.1.1"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.glassfish.jersey.core:jersey-common": {
- "locked": "2.22.2"
- },
- "org.jetbrains:annotations": {
- "locked": "23.0.0"
- },
- "org.slf4j:slf4j-api": {
- "locked": "1.7.36"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.amazonaws:aws-java-sdk-core": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "locked": "1.10.10"
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.sun.jersey:jersey-client": {
- "locked": "1.19.4"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "javax.ws.rs:javax.ws.rs-api": {
- "locked": "2.1.1"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.glassfish.jersey.core:jersey-common": {
- "locked": "2.22.2"
- },
- "org.slf4j:slf4j-api": {
- "locked": "1.7.36"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.amazonaws:aws-java-sdk-core": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "locked": "1.10.10"
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.sun.jersey:jersey-client": {
- "locked": "1.19.4"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "javax.ws.rs:javax.ws.rs-api": {
- "locked": "2.1.1"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.codehaus.groovy:groovy-all": {
- "locked": "3.0.19"
- },
- "org.glassfish.jersey.core:jersey-common": {
- "locked": "2.22.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.powermock:powermock-api-mockito2": {
- "locked": "2.0.9"
- },
- "org.powermock:powermock-module-junit4": {
- "locked": "2.0.9"
- },
- "org.slf4j:slf4j-api": {
- "locked": "1.7.36"
- },
- "org.spockframework:spock-core": {
- "locked": "2.3-groovy-3.0"
- },
- "org.spockframework:spock-spring": {
- "locked": "2.3-groovy-3.0"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.amazonaws:aws-java-sdk-core": {
- "locked": "1.12.535"
- },
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.eureka:eureka-client": {
- "locked": "1.10.10"
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.sun.jersey:jersey-client": {
- "locked": "1.19.4"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "javax.ws.rs:javax.ws.rs-api": {
- "locked": "2.1.1"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.codehaus.groovy:groovy-all": {
- "locked": "3.0.19"
- },
- "org.glassfish.jersey.core:jersey-common": {
- "locked": "2.22.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.powermock:powermock-api-mockito2": {
- "locked": "2.0.9"
- },
- "org.powermock:powermock-module-junit4": {
- "locked": "2.0.9"
- },
- "org.slf4j:slf4j-api": {
- "locked": "1.7.36"
- },
- "org.spockframework:spock-core": {
- "locked": "2.3-groovy-3.0"
- },
- "org.spockframework:spock-spring": {
- "locked": "2.3-groovy-3.0"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/client/src/main/java/com/netflix/conductor/client/automator/PollingSemaphore.java b/client/src/main/java/com/netflix/conductor/client/automator/PollingSemaphore.java
index 334501fac..c4304c2d5 100644
--- a/client/src/main/java/com/netflix/conductor/client/automator/PollingSemaphore.java
+++ b/client/src/main/java/com/netflix/conductor/client/automator/PollingSemaphore.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/automator/TaskPollExecutor.java b/client/src/main/java/com/netflix/conductor/client/automator/TaskPollExecutor.java
index 3b011c93d..b0cb46c53 100644
--- a/client/src/main/java/com/netflix/conductor/client/automator/TaskPollExecutor.java
+++ b/client/src/main/java/com/netflix/conductor/client/automator/TaskPollExecutor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/automator/TaskRunnerConfigurer.java b/client/src/main/java/com/netflix/conductor/client/automator/TaskRunnerConfigurer.java
index 3709f2aa5..3f740e6e4 100644
--- a/client/src/main/java/com/netflix/conductor/client/automator/TaskRunnerConfigurer.java
+++ b/client/src/main/java/com/netflix/conductor/client/automator/TaskRunnerConfigurer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/config/ConductorClientConfiguration.java b/client/src/main/java/com/netflix/conductor/client/config/ConductorClientConfiguration.java
index 6c3029fa1..bb5a28926 100644
--- a/client/src/main/java/com/netflix/conductor/client/config/ConductorClientConfiguration.java
+++ b/client/src/main/java/com/netflix/conductor/client/config/ConductorClientConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2018 Netflix, Inc.
+ * Copyright 2018 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/config/DefaultConductorClientConfiguration.java b/client/src/main/java/com/netflix/conductor/client/config/DefaultConductorClientConfiguration.java
index f15cf3bab..13e7f3247 100644
--- a/client/src/main/java/com/netflix/conductor/client/config/DefaultConductorClientConfiguration.java
+++ b/client/src/main/java/com/netflix/conductor/client/config/DefaultConductorClientConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/config/PropertyFactory.java b/client/src/main/java/com/netflix/conductor/client/config/PropertyFactory.java
index 443b85481..dcde89a37 100644
--- a/client/src/main/java/com/netflix/conductor/client/config/PropertyFactory.java
+++ b/client/src/main/java/com/netflix/conductor/client/config/PropertyFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/exception/ConductorClientException.java b/client/src/main/java/com/netflix/conductor/client/exception/ConductorClientException.java
index 5f3c79c00..a2af3a06b 100644
--- a/client/src/main/java/com/netflix/conductor/client/exception/ConductorClientException.java
+++ b/client/src/main/java/com/netflix/conductor/client/exception/ConductorClientException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/ClientBase.java b/client/src/main/java/com/netflix/conductor/client/http/ClientBase.java
index a27da869d..5326abe4d 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/ClientBase.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/ClientBase.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/ClientRequestHandler.java b/client/src/main/java/com/netflix/conductor/client/http/ClientRequestHandler.java
index 38749c1c5..164cb579b 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/ClientRequestHandler.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/ClientRequestHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/EventClient.java b/client/src/main/java/com/netflix/conductor/client/http/EventClient.java
index 660c2b44a..1782d0177 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/EventClient.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/EventClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/MetadataClient.java b/client/src/main/java/com/netflix/conductor/client/http/MetadataClient.java
index 8db927b8c..2db8df237 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/MetadataClient.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/MetadataClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/PayloadStorage.java b/client/src/main/java/com/netflix/conductor/client/http/PayloadStorage.java
index 0b05745f0..668e50047 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/PayloadStorage.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/PayloadStorage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/TaskClient.java b/client/src/main/java/com/netflix/conductor/client/http/TaskClient.java
index d624ef0f6..35d48b2e3 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/TaskClient.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/TaskClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/http/WorkflowClient.java b/client/src/main/java/com/netflix/conductor/client/http/WorkflowClient.java
index 6bfa686bb..14deabff3 100644
--- a/client/src/main/java/com/netflix/conductor/client/http/WorkflowClient.java
+++ b/client/src/main/java/com/netflix/conductor/client/http/WorkflowClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/telemetry/MetricsContainer.java b/client/src/main/java/com/netflix/conductor/client/telemetry/MetricsContainer.java
index 7b9bb0ca3..d80349ff9 100644
--- a/client/src/main/java/com/netflix/conductor/client/telemetry/MetricsContainer.java
+++ b/client/src/main/java/com/netflix/conductor/client/telemetry/MetricsContainer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/main/java/com/netflix/conductor/client/worker/Worker.java b/client/src/main/java/com/netflix/conductor/client/worker/Worker.java
index 9f07b151c..5b0ecc0b1 100644
--- a/client/src/main/java/com/netflix/conductor/client/worker/Worker.java
+++ b/client/src/main/java/com/netflix/conductor/client/worker/Worker.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/groovy/com/netflix/conductor/client/http/ClientSpecification.groovy b/client/src/test/groovy/com/netflix/conductor/client/http/ClientSpecification.groovy
index 5c4a5208d..c804f785c 100644
--- a/client/src/test/groovy/com/netflix/conductor/client/http/ClientSpecification.groovy
+++ b/client/src/test/groovy/com/netflix/conductor/client/http/ClientSpecification.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/groovy/com/netflix/conductor/client/http/EventClientSpec.groovy b/client/src/test/groovy/com/netflix/conductor/client/http/EventClientSpec.groovy
index f4f32a767..bb121c56d 100644
--- a/client/src/test/groovy/com/netflix/conductor/client/http/EventClientSpec.groovy
+++ b/client/src/test/groovy/com/netflix/conductor/client/http/EventClientSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/groovy/com/netflix/conductor/client/http/MetadataClientSpec.groovy b/client/src/test/groovy/com/netflix/conductor/client/http/MetadataClientSpec.groovy
index d82acc509..13790d3fc 100644
--- a/client/src/test/groovy/com/netflix/conductor/client/http/MetadataClientSpec.groovy
+++ b/client/src/test/groovy/com/netflix/conductor/client/http/MetadataClientSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/groovy/com/netflix/conductor/client/http/TaskClientSpec.groovy b/client/src/test/groovy/com/netflix/conductor/client/http/TaskClientSpec.groovy
index bf21d8107..2caba4490 100644
--- a/client/src/test/groovy/com/netflix/conductor/client/http/TaskClientSpec.groovy
+++ b/client/src/test/groovy/com/netflix/conductor/client/http/TaskClientSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/groovy/com/netflix/conductor/client/http/WorkflowClientSpec.groovy b/client/src/test/groovy/com/netflix/conductor/client/http/WorkflowClientSpec.groovy
index 08ebfee83..b4f30aeb1 100644
--- a/client/src/test/groovy/com/netflix/conductor/client/http/WorkflowClientSpec.groovy
+++ b/client/src/test/groovy/com/netflix/conductor/client/http/WorkflowClientSpec.groovy
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/automator/PollingSemaphoreTest.java b/client/src/test/java/com/netflix/conductor/client/automator/PollingSemaphoreTest.java
index 38735b120..7bc7e7c3a 100644
--- a/client/src/test/java/com/netflix/conductor/client/automator/PollingSemaphoreTest.java
+++ b/client/src/test/java/com/netflix/conductor/client/automator/PollingSemaphoreTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/automator/TaskPollExecutorTest.java b/client/src/test/java/com/netflix/conductor/client/automator/TaskPollExecutorTest.java
index 5bbe8ba24..60855bdae 100644
--- a/client/src/test/java/com/netflix/conductor/client/automator/TaskPollExecutorTest.java
+++ b/client/src/test/java/com/netflix/conductor/client/automator/TaskPollExecutorTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/automator/TaskRunnerConfigurerTest.java b/client/src/test/java/com/netflix/conductor/client/automator/TaskRunnerConfigurerTest.java
index d86ae76f1..cbd9df8a9 100644
--- a/client/src/test/java/com/netflix/conductor/client/automator/TaskRunnerConfigurerTest.java
+++ b/client/src/test/java/com/netflix/conductor/client/automator/TaskRunnerConfigurerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/config/TestPropertyFactory.java b/client/src/test/java/com/netflix/conductor/client/config/TestPropertyFactory.java
index 87b6f40e4..398738c59 100644
--- a/client/src/test/java/com/netflix/conductor/client/config/TestPropertyFactory.java
+++ b/client/src/test/java/com/netflix/conductor/client/config/TestPropertyFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/sample/Main.java b/client/src/test/java/com/netflix/conductor/client/sample/Main.java
index 6fbbb00d1..7a474b146 100644
--- a/client/src/test/java/com/netflix/conductor/client/sample/Main.java
+++ b/client/src/test/java/com/netflix/conductor/client/sample/Main.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/sample/SampleWorker.java b/client/src/test/java/com/netflix/conductor/client/sample/SampleWorker.java
index cc2cbda60..6073c3f90 100644
--- a/client/src/test/java/com/netflix/conductor/client/sample/SampleWorker.java
+++ b/client/src/test/java/com/netflix/conductor/client/sample/SampleWorker.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/testing/AbstractWorkflowTests.java b/client/src/test/java/com/netflix/conductor/client/testing/AbstractWorkflowTests.java
index 69703816d..c2afa03f3 100644
--- a/client/src/test/java/com/netflix/conductor/client/testing/AbstractWorkflowTests.java
+++ b/client/src/test/java/com/netflix/conductor/client/testing/AbstractWorkflowTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowInput.java b/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowInput.java
index cb48576a6..cd73b1af4 100644
--- a/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowInput.java
+++ b/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowInput.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowTest.java b/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowTest.java
index df09964d8..84f876a1a 100644
--- a/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowTest.java
+++ b/client/src/test/java/com/netflix/conductor/client/testing/LoanWorkflowTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/testing/RegressionTest.java b/client/src/test/java/com/netflix/conductor/client/testing/RegressionTest.java
index 4b51a2df2..e67f83658 100644
--- a/client/src/test/java/com/netflix/conductor/client/testing/RegressionTest.java
+++ b/client/src/test/java/com/netflix/conductor/client/testing/RegressionTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/testing/SubWorkflowTest.java b/client/src/test/java/com/netflix/conductor/client/testing/SubWorkflowTest.java
index 5994d8c1c..f01d3f921 100644
--- a/client/src/test/java/com/netflix/conductor/client/testing/SubWorkflowTest.java
+++ b/client/src/test/java/com/netflix/conductor/client/testing/SubWorkflowTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2023 Netflix, Inc.
+ * Copyright 2023 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/client/src/test/java/com/netflix/conductor/client/worker/TestWorkflowTask.java b/client/src/test/java/com/netflix/conductor/client/worker/TestWorkflowTask.java
index 62720e92f..32f7bcb76 100644
--- a/client/src/test/java/com/netflix/conductor/client/worker/TestWorkflowTask.java
+++ b/client/src/test/java/com/netflix/conductor/client/worker/TestWorkflowTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common-persistence/build.gradle b/common-persistence/build.gradle
new file mode 100644
index 000000000..9d09a58ac
--- /dev/null
+++ b/common-persistence/build.gradle
@@ -0,0 +1,10 @@
+dependencies {
+
+ implementation project(':conductor-common')
+ implementation project(':conductor-core')
+
+ implementation "com.fasterxml.jackson.core:jackson-databind"
+ implementation "com.fasterxml.jackson.core:jackson-core"
+ implementation "org.apache.commons:commons-lang3"
+
+}
\ No newline at end of file
diff --git a/common-persistence/src/test/java/com/netflix/conductor/dao/ExecutionDAOTest.java b/common-persistence/src/test/java/com/netflix/conductor/dao/ExecutionDAOTest.java
new file mode 100644
index 000000000..fc4068706
--- /dev/null
+++ b/common-persistence/src/test/java/com/netflix/conductor/dao/ExecutionDAOTest.java
@@ -0,0 +1,440 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.dao;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.netflix.conductor.common.metadata.tasks.TaskDef;
+import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
+import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
+import com.netflix.conductor.core.exception.NonTransientException;
+import com.netflix.conductor.model.TaskModel;
+import com.netflix.conductor.model.WorkflowModel;
+
+import static org.junit.Assert.*;
+
+public abstract class ExecutionDAOTest {
+
+ protected abstract ExecutionDAO getExecutionDAO();
+
+ protected ConcurrentExecutionLimitDAO getConcurrentExecutionLimitDAO() {
+ return (ConcurrentExecutionLimitDAO) getExecutionDAO();
+ }
+
+ @Rule public ExpectedException expectedException = ExpectedException.none();
+
+ @Test
+ public void testTaskExceedsLimit() {
+ TaskDef taskDefinition = new TaskDef();
+ taskDefinition.setName("task100");
+ taskDefinition.setConcurrentExecLimit(1);
+
+ WorkflowTask workflowTask = new WorkflowTask();
+ workflowTask.setName("task1");
+ workflowTask.setTaskDefinition(taskDefinition);
+ workflowTask.setTaskDefinition(taskDefinition);
+
+ List
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.dao;
+
+public class TestBase {}
diff --git a/common/build.gradle b/common/build.gradle
index 5f20d89b8..8332cb312 100644
--- a/common/build.gradle
+++ b/common/build.gradle
@@ -9,7 +9,7 @@ dependencies {
compileOnly 'org.springframework.boot:spring-boot-starter'
compileOnly 'org.springframework.boot:spring-boot-starter-validation'
- compileOnly "org.springdoc:springdoc-openapi-ui:${revOpenapi}"
+ compileOnly "org.springdoc:springdoc-openapi-starter-webmvc-ui:${revSpringDoc}"
implementation "org.apache.commons:commons-lang3"
@@ -23,10 +23,11 @@ dependencies {
implementation "com.fasterxml.jackson.module:jackson-module-afterburner:${revFasterXml}"
testImplementation 'org.springframework.boot:spring-boot-starter-validation'
+ testImplementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:${revSpringDoc}"
}
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2023 Conductor authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/dependencies.lock b/common/dependencies.lock
deleted file mode 100644
index b046f5bb4..000000000
--- a/common/dependencies.lock
+++ /dev/null
@@ -1,574 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "annotationsProcessorCodegen": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.13.5"
- },
- "com.github.jknack:handlebars": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "4.3.1"
- },
- "com.google.guava:guava": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "32.1.2-jre"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "3.21.12"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-annotations-processor": {
- "project": true
- },
- "com.squareup:javapoet": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "1.13.0"
- },
- "javax.annotation:javax.annotation-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "1.3.2"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-annotations-processor"
- ],
- "locked": "1.30"
- }
- },
- "compileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "org.apache.bval:bval-jsr": {
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.springdoc:springdoc-openapi-ui": {
- "locked": "1.6.15"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-validation": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "org.apache.bval:bval-jsr": {
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-validation": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.15.0"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.netflix.conductor:conductor-annotations": {
- "project": true
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.17.2"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-validation": {
- "locked": "2.7.16"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java b/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java
new file mode 100644
index 000000000..c07e679f7
--- /dev/null
+++ b/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoEnum.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2022 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.annotations.protogen;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * ProtoEnum annotates an enum type that will be exposed via the GRPC API as a native Protocol
+ * Buffers enum.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ProtoEnum {}
diff --git a/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java b/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java
new file mode 100644
index 000000000..a61bb5ea1
--- /dev/null
+++ b/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoField.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2022 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.annotations.protogen;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * ProtoField annotates a field inside an struct with metadata on how to expose it on its
+ * corresponding Protocol Buffers struct. For a field to be exposed in a ProtoBuf struct, the
+ * containing struct must also be annotated with a {@link ProtoMessage} or {@link ProtoEnum} tag.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface ProtoField {
+ /**
+ * Mandatory. Sets the Protocol Buffer ID for this specific field. Once a field has been
+ * annotated with a given ID, the ID can never change to a different value or the resulting
+ * Protocol Buffer struct will not be backwards compatible.
+ *
+ * @return the numeric ID for the field
+ */
+ int id();
+}
diff --git a/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java b/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java
new file mode 100644
index 000000000..45fa884f9
--- /dev/null
+++ b/common/src/main/java/com/netflix/conductor/annotations/protogen/ProtoMessage.java
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2022 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.annotations.protogen;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * ProtoMessage annotates a given Java class so it becomes exposed via the GRPC API as a native
+ * Protocol Buffers struct. The annotated class must be a POJO.
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface ProtoMessage {
+ /**
+ * Sets whether the generated mapping code will contain a helper to translate the POJO for this
+ * class into the equivalent ProtoBuf object.
+ *
+ * @return whether this class will generate a mapper to ProtoBuf objects
+ */
+ boolean toProto() default true;
+
+ /**
+ * Sets whether the generated mapping code will contain a helper to translate the ProtoBuf
+ * object for this class into the equivalent POJO.
+ *
+ * @return whether this class will generate a mapper from ProtoBuf objects
+ */
+ boolean fromProto() default true;
+
+ /**
+ * Sets whether this is a wrapper class that will be used to encapsulate complex nested type
+ * interfaces. Wrapper classes are not directly exposed by the ProtoBuf API and must be mapped
+ * manually.
+ *
+ * @return whether this is a wrapper class
+ */
+ boolean wrapper() default false;
+}
diff --git a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java
index a281edb34..40b781eab 100644
--- a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java
+++ b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java
index ffcb71945..9d698cb1b 100644
--- a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java
+++ b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -12,13 +12,12 @@
*/
package com.netflix.conductor.common.config;
-import javax.annotation.PostConstruct;
-
import org.springframework.context.annotation.Configuration;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
+import jakarta.annotation.PostConstruct;
@Configuration
public class ObjectMapperConfiguration {
diff --git a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java
index 43398df79..5e3a5562c 100644
--- a/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java
+++ b/common/src/main/java/com/netflix/conductor/common/config/ObjectMapperProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,6 +17,8 @@
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.module.afterburner.AfterburnerModule;
/**
@@ -26,6 +28,8 @@
*/
public class ObjectMapperProvider {
+ private static final ObjectMapper objectMapper = _getObjectMapper();
+
/**
* The customizations in this method are configured using {@link
* org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration}
@@ -39,6 +43,10 @@ public class ObjectMapperProvider {
* @see org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
*/
public ObjectMapper getObjectMapper() {
+ return objectMapper;
+ }
+
+ private static ObjectMapper _getObjectMapper() {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
@@ -46,7 +54,9 @@ public ObjectMapper getObjectMapper() {
objectMapper.setDefaultPropertyInclusion(
JsonInclude.Value.construct(
JsonInclude.Include.NON_NULL, JsonInclude.Include.ALWAYS));
+ objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
objectMapper.registerModule(new JsonProtoModule());
+ objectMapper.registerModule(new JavaTimeModule());
objectMapper.registerModule(new AfterburnerModule());
return objectMapper;
}
diff --git a/common/src/main/java/com/netflix/conductor/common/constraints/NoSemiColonConstraint.java b/common/src/main/java/com/netflix/conductor/common/constraints/NoSemiColonConstraint.java
index 3bd402013..b3482c979 100644
--- a/common/src/main/java/com/netflix/conductor/common/constraints/NoSemiColonConstraint.java
+++ b/common/src/main/java/com/netflix/conductor/common/constraints/NoSemiColonConstraint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,13 +17,13 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.Payload;
-
import org.apache.commons.lang3.StringUtils;
+import jakarta.validation.Constraint;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import jakarta.validation.Payload;
+
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.PARAMETER;
diff --git a/common/src/main/java/com/netflix/conductor/common/constraints/OwnerEmailMandatoryConstraint.java b/common/src/main/java/com/netflix/conductor/common/constraints/OwnerEmailMandatoryConstraint.java
index 55347529d..297d61442 100644
--- a/common/src/main/java/com/netflix/conductor/common/constraints/OwnerEmailMandatoryConstraint.java
+++ b/common/src/main/java/com/netflix/conductor/common/constraints/OwnerEmailMandatoryConstraint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,13 +17,13 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.Payload;
-
import org.apache.commons.lang3.StringUtils;
+import jakarta.validation.Constraint;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import jakarta.validation.Payload;
+
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.TYPE;
diff --git a/common/src/main/java/com/netflix/conductor/common/constraints/TaskReferenceNameUniqueConstraint.java b/common/src/main/java/com/netflix/conductor/common/constraints/TaskReferenceNameUniqueConstraint.java
index 24f0ff433..3d325f577 100644
--- a/common/src/main/java/com/netflix/conductor/common/constraints/TaskReferenceNameUniqueConstraint.java
+++ b/common/src/main/java/com/netflix/conductor/common/constraints/TaskReferenceNameUniqueConstraint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -19,17 +19,17 @@
import java.util.HashMap;
import java.util.List;
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.Payload;
-
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
import com.netflix.conductor.common.utils.ConstraintParamUtil;
+import jakarta.validation.Constraint;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import jakarta.validation.Payload;
+
import static java.lang.annotation.ElementType.TYPE;
/**
diff --git a/common/src/main/java/com/netflix/conductor/common/constraints/TaskTimeoutConstraint.java b/common/src/main/java/com/netflix/conductor/common/constraints/TaskTimeoutConstraint.java
index 56525c7b5..a9e6576f0 100644
--- a/common/src/main/java/com/netflix/conductor/common/constraints/TaskTimeoutConstraint.java
+++ b/common/src/main/java/com/netflix/conductor/common/constraints/TaskTimeoutConstraint.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,13 +17,13 @@
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
-import javax.validation.Constraint;
-import javax.validation.ConstraintValidator;
-import javax.validation.ConstraintValidatorContext;
-import javax.validation.Payload;
-
import com.netflix.conductor.common.metadata.tasks.TaskDef;
+import jakarta.validation.Constraint;
+import jakarta.validation.ConstraintValidator;
+import jakarta.validation.ConstraintValidatorContext;
+import jakarta.validation.Payload;
+
import static java.lang.annotation.ElementType.TYPE;
/**
diff --git a/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java b/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java
index 29bb5e11d..b109e8ea9 100644
--- a/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java
+++ b/common/src/main/java/com/netflix/conductor/common/jackson/JsonProtoModule.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/Auditable.java b/common/src/main/java/com/netflix/conductor/common/metadata/Auditable.java
index 01f229480..bef2e1792 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/Auditable.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/Auditable.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -42,7 +42,7 @@ public void setOwnerApp(String ownerApp) {
* @return the createTime
*/
public Long getCreateTime() {
- return createTime;
+ return createTime == null ? 0 : createTime;
}
/**
@@ -56,7 +56,7 @@ public void setCreateTime(Long createTime) {
* @return the updateTime
*/
public Long getUpdateTime() {
- return updateTime;
+ return updateTime == null ? 0 : updateTime;
}
/**
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/BaseDef.java b/common/src/main/java/com/netflix/conductor/common/metadata/BaseDef.java
index d638d2d32..fac1d1047 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/BaseDef.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/BaseDef.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -22,6 +22,7 @@
* A base class for {@link com.netflix.conductor.common.metadata.workflow.WorkflowDef} and {@link
* com.netflix.conductor.common.metadata.tasks.TaskDef}.
*/
+@Deprecated
public abstract class BaseDef extends Auditable {
private final Map
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.common.metadata;
+
+import java.util.Map;
+
+import com.netflix.conductor.annotations.protogen.ProtoEnum;
+import com.netflix.conductor.annotations.protogen.ProtoField;
+import com.netflix.conductor.annotations.protogen.ProtoMessage;
+
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+@EqualsAndHashCode(callSuper = true)
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ProtoMessage
+public class SchemaDef extends Auditable {
+
+ @ProtoEnum
+ public enum Type {
+ JSON,
+ AVRO,
+ PROTOBUF
+ }
+
+ @ProtoField(id = 1)
+ @NotNull
+ private String name;
+
+ @ProtoField(id = 2)
+ @NotNull
+ @Builder.Default
+ private int version = 1;
+
+ @ProtoField(id = 3)
+ @NotNull
+ private Type type;
+
+ // Schema definition stored here
+ private Map
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -15,6 +15,7 @@
import com.netflix.conductor.annotations.protogen.ProtoEnum;
@ProtoEnum
+@Deprecated
public enum Permission {
OWNER,
OPERATOR
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/events/EventExecution.java b/common/src/main/java/com/netflix/conductor/common/metadata/events/EventExecution.java
index d6a2065e6..fd5310ac5 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/events/EventExecution.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/events/EventExecution.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/events/EventHandler.java b/common/src/main/java/com/netflix/conductor/common/metadata/events/EventHandler.java
index 77dda4c1e..56817315a 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/events/EventHandler.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/events/EventHandler.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,16 +17,15 @@
import java.util.List;
import java.util.Map;
-import javax.validation.Valid;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
import com.netflix.conductor.annotations.protogen.ProtoEnum;
import com.netflix.conductor.annotations.protogen.ProtoField;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
import com.google.protobuf.Any;
import io.swagger.v3.oas.annotations.Hidden;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
/** Defines an event handler */
@ProtoMessage
@@ -147,7 +146,9 @@ public static class Action {
public enum Type {
start_workflow,
complete_task,
- fail_task
+ fail_task,
+ terminate_workflow,
+ update_workflow_variables
}
@ProtoField(id = 1)
@@ -165,6 +166,12 @@ public enum Type {
@ProtoField(id = 5)
private boolean expandInlineJSON;
+ @ProtoField(id = 6)
+ private TerminateWorkflow terminate_workflow;
+
+ @ProtoField(id = 7)
+ private UpdateWorkflowVariables update_workflow_variables;
+
/**
* @return the action
*/
@@ -235,6 +242,35 @@ public void setExpandInlineJSON(boolean expandInlineJSON) {
public boolean isExpandInlineJSON() {
return expandInlineJSON;
}
+
+ /**
+ * @return the terminate_workflow
+ */
+ public TerminateWorkflow getTerminate_workflow() {
+ return terminate_workflow;
+ }
+
+ /**
+ * @param terminate_workflow the terminate_workflow to set
+ */
+ public void setTerminate_workflow(TerminateWorkflow terminate_workflow) {
+ this.terminate_workflow = terminate_workflow;
+ }
+
+ /**
+ * @return the update_workflow_variables
+ */
+ public UpdateWorkflowVariables getUpdate_workflow_variables() {
+ return update_workflow_variables;
+ }
+
+ /**
+ * @param update_workflow_variables the update_workflow_variables to set
+ */
+ public void setUpdate_workflow_variables(
+ UpdateWorkflowVariables update_workflow_variables) {
+ this.update_workflow_variables = update_workflow_variables;
+ }
}
@ProtoMessage
@@ -415,4 +451,97 @@ public void setTaskToDomain(Map
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/Task.java b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/Task.java
index f51016340..495ff06a9 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/Task.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/Task.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -202,6 +202,9 @@ public boolean isRetriable() {
@ProtoField(id = 42)
private boolean subworkflowChanged;
+ // If the task is an event associated with a parent task, the id of the parent task
+ private String parentTaskId;
+
public Task() {}
/**
@@ -754,6 +757,14 @@ public void setSubWorkflowId(String subWorkflowId) {
}
}
+ public String getParentTaskId() {
+ return parentTaskId;
+ }
+
+ public void setParentTaskId(String parentTaskId) {
+ this.parentTaskId = parentTaskId;
+ }
+
public Task copy() {
Task copy = new Task();
copy.setCallbackAfterSeconds(callbackAfterSeconds);
@@ -786,7 +797,7 @@ public Task copy() {
copy.setIsolationGroupId(isolationGroupId);
copy.setSubWorkflowId(getSubWorkflowId());
copy.setSubworkflowChanged(subworkflowChanged);
-
+ copy.setParentTaskId(parentTaskId);
return copy;
}
@@ -807,7 +818,7 @@ public Task deepCopy() {
deepCopy.setWorkerId(workerId);
deepCopy.setReasonForIncompletion(reasonForIncompletion);
deepCopy.setSeq(seq);
-
+ deepCopy.setParentTaskId(parentTaskId);
return deepCopy;
}
@@ -961,7 +972,8 @@ && getWorkflowPriority() == task.getWorkflowPriority()
getExternalOutputPayloadStoragePath(),
task.getExternalOutputPayloadStoragePath())
&& Objects.equals(getIsolationGroupId(), task.getIsolationGroupId())
- && Objects.equals(getExecutionNameSpace(), task.getExecutionNameSpace());
+ && Objects.equals(getExecutionNameSpace(), task.getExecutionNameSpace())
+ && Objects.equals(getParentTaskId(), task.getParentTaskId());
}
@Override
@@ -1003,6 +1015,7 @@ public int hashCode() {
getExternalInputPayloadStoragePath(),
getExternalOutputPayloadStoragePath(),
getIsolationGroupId(),
- getExecutionNameSpace());
+ getExecutionNameSpace(),
+ getParentTaskId());
}
}
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskDef.java b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskDef.java
index 59e119a0e..7e4357604 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskDef.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskDef.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -18,23 +18,23 @@
import java.util.Map;
import java.util.Objects;
-import javax.validation.Valid;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
import com.netflix.conductor.annotations.protogen.ProtoEnum;
import com.netflix.conductor.annotations.protogen.ProtoField;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
import com.netflix.conductor.common.constraints.OwnerEmailMandatoryConstraint;
import com.netflix.conductor.common.constraints.TaskTimeoutConstraint;
-import com.netflix.conductor.common.metadata.BaseDef;
+import com.netflix.conductor.common.metadata.Auditable;
+import com.netflix.conductor.common.metadata.SchemaDef;
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
@ProtoMessage
@TaskTimeoutConstraint
@Valid
-public class TaskDef extends BaseDef {
+public class TaskDef extends Auditable {
@ProtoEnum
public enum TimeoutPolicy {
@@ -114,7 +114,6 @@ public enum RetryLogic {
@ProtoField(id = 18)
@OwnerEmailMandatoryConstraint
- @Email(message = "ownerEmail should be valid email address")
private String ownerEmail;
@ProtoField(id = 19)
@@ -125,6 +124,13 @@ public enum RetryLogic {
@Min(value = 1, message = "Backoff scale factor. Applicable for LINEAR_BACKOFF")
private Integer backoffScaleFactor = 1;
+ @ProtoField(id = 21)
+ private String baseType;
+
+ private SchemaDef inputSchema;
+ private SchemaDef outputSchema;
+ private boolean enforceSchema;
+
public TaskDef() {}
public TaskDef(String name) {
@@ -426,6 +432,38 @@ public Integer getBackoffScaleFactor() {
return backoffScaleFactor;
}
+ public String getBaseType() {
+ return baseType;
+ }
+
+ public void setBaseType(String baseType) {
+ this.baseType = baseType;
+ }
+
+ public SchemaDef getInputSchema() {
+ return inputSchema;
+ }
+
+ public void setInputSchema(SchemaDef inputSchema) {
+ this.inputSchema = inputSchema;
+ }
+
+ public SchemaDef getOutputSchema() {
+ return outputSchema;
+ }
+
+ public void setOutputSchema(SchemaDef outputSchema) {
+ this.outputSchema = outputSchema;
+ }
+
+ public boolean isEnforceSchema() {
+ return enforceSchema;
+ }
+
+ public void setEnforceSchema(boolean enforceSchema) {
+ this.enforceSchema = enforceSchema;
+ }
+
@Override
public String toString() {
return name;
@@ -456,7 +494,10 @@ && getRetryLogic() == taskDef.getRetryLogic()
&& Objects.equals(getInputTemplate(), taskDef.getInputTemplate())
&& Objects.equals(getIsolationGroupId(), taskDef.getIsolationGroupId())
&& Objects.equals(getExecutionNameSpace(), taskDef.getExecutionNameSpace())
- && Objects.equals(getOwnerEmail(), taskDef.getOwnerEmail());
+ && Objects.equals(getOwnerEmail(), taskDef.getOwnerEmail())
+ && Objects.equals(getBaseType(), taskDef.getBaseType())
+ && Objects.equals(getInputSchema(), taskDef.getInputSchema())
+ && Objects.equals(getOutputSchema(), taskDef.getOutputSchema());
}
@Override
@@ -479,6 +520,9 @@ public int hashCode() {
getInputTemplate(),
getIsolationGroupId(),
getExecutionNameSpace(),
- getOwnerEmail());
+ getOwnerEmail(),
+ getBaseType(),
+ getInputSchema(),
+ getOutputSchema());
}
}
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskExecLog.java b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskExecLog.java
index 256e1da6f..a04eb1257 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskExecLog.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskExecLog.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskResult.java b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskResult.java
index 8953d499b..704c9fa70 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskResult.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskResult.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,8 +17,6 @@
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
-import javax.validation.constraints.NotEmpty;
-
import org.apache.commons.lang3.StringUtils;
import com.netflix.conductor.annotations.protogen.ProtoEnum;
@@ -27,6 +25,7 @@
import com.google.protobuf.Any;
import io.swagger.v3.oas.annotations.Hidden;
+import jakarta.validation.constraints.NotEmpty;
/** Result of the task execution. */
@ProtoMessage
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java
index 235a0ac91..902027b02 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/tasks/TaskType.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTask.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTask.java
index d95354ef5..05c5dfbfb 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTask.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTask.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTaskList.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTaskList.java
index f11530dc7..ca5292b51 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTaskList.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/DynamicForkJoinTaskList.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/IdempotencyStrategy.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/IdempotencyStrategy.java
new file mode 100644
index 000000000..4b9ebd60b
--- /dev/null
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/IdempotencyStrategy.java
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2020 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.common.metadata.workflow;
+
+public enum IdempotencyStrategy {
+ FAIL,
+ RETURN_EXISTING
+}
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RateLimitConfig.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RateLimitConfig.java
new file mode 100644
index 000000000..966880f68
--- /dev/null
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RateLimitConfig.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.common.metadata.workflow;
+
+import com.netflix.conductor.annotations.protogen.ProtoField;
+import com.netflix.conductor.annotations.protogen.ProtoMessage;
+
+/** Rate limit configuration for workflows */
+@ProtoMessage
+public class RateLimitConfig {
+ /**
+ * Key that defines the rate limit. Rate limit key is a combination of workflow payload such as
+ * name, or correlationId etc.
+ */
+ @ProtoField(id = 1)
+ private String rateLimitKey;
+
+ /** Number of concurrently running workflows that are allowed per key */
+ @ProtoField(id = 2)
+ private int concurrentExecLimit;
+
+ public String getRateLimitKey() {
+ return rateLimitKey;
+ }
+
+ public void setRateLimitKey(String rateLimitKey) {
+ this.rateLimitKey = rateLimitKey;
+ }
+
+ public int getConcurrentExecLimit() {
+ return concurrentExecLimit;
+ }
+
+ public void setConcurrentExecLimit(int concurrentExecLimit) {
+ this.concurrentExecLimit = concurrentExecLimit;
+ }
+}
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RerunWorkflowRequest.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RerunWorkflowRequest.java
index 67c1b86a7..82d802109 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RerunWorkflowRequest.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/RerunWorkflowRequest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/SkipTaskRequest.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/SkipTaskRequest.java
index 8540794a6..42371c943 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/SkipTaskRequest.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/SkipTaskRequest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StartWorkflowRequest.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StartWorkflowRequest.java
index cc01bca1a..9d76533d6 100644
--- a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StartWorkflowRequest.java
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StartWorkflowRequest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -15,14 +15,14 @@
import java.util.HashMap;
import java.util.Map;
-import javax.validation.Valid;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-
import com.netflix.conductor.annotations.protogen.ProtoField;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
+
@ProtoMessage
public class StartWorkflowRequest {
@@ -54,6 +54,29 @@ public class StartWorkflowRequest {
@Max(value = 99, message = "priority: ${validatedValue} should be maximum {value}")
private Integer priority = 0;
+ @ProtoField(id = 9)
+ private String createdBy;
+
+ private String idempotencyKey;
+
+ private IdempotencyStrategy idempotencyStrategy;
+
+ public String getIdempotencyKey() {
+ return idempotencyKey;
+ }
+
+ public void setIdempotencyKey(String idempotencyKey) {
+ this.idempotencyKey = idempotencyKey;
+ }
+
+ public IdempotencyStrategy getIdempotencyStrategy() {
+ return idempotencyStrategy;
+ }
+
+ public void setIdempotencyStrategy(IdempotencyStrategy idempotencyStrategy) {
+ this.idempotencyStrategy = idempotencyStrategy;
+ }
+
public String getName() {
return name;
}
@@ -158,4 +181,17 @@ public StartWorkflowRequest withWorkflowDef(WorkflowDef workflowDef) {
this.workflowDef = workflowDef;
return this;
}
+
+ public String getCreatedBy() {
+ return createdBy;
+ }
+
+ public void setCreatedBy(String createdBy) {
+ this.createdBy = createdBy;
+ }
+
+ public StartWorkflowRequest withCreatedBy(String createdBy) {
+ this.createdBy = createdBy;
+ return this;
+ }
}
diff --git a/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StateChangeEvent.java b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StateChangeEvent.java
new file mode 100644
index 000000000..fc0275a5e
--- /dev/null
+++ b/common/src/main/java/com/netflix/conductor/common/metadata/workflow/StateChangeEvent.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.common.metadata.workflow;
+
+import java.util.Map;
+
+import com.netflix.conductor.annotations.protogen.ProtoField;
+import com.netflix.conductor.annotations.protogen.ProtoMessage;
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+
+@Valid
+@ProtoMessage
+public class StateChangeEvent {
+
+ @ProtoField(id = 1)
+ @NotNull
+ private String type;
+
+ @ProtoField(id = 2)
+ private Map
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -12,24 +12,22 @@
*/
package com.netflix.conductor.common.metadata.workflow;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
import com.netflix.conductor.annotations.protogen.ProtoField;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
+import com.netflix.conductor.common.utils.TaskUtils;
import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSetter;
@ProtoMessage
public class SubWorkflowParams {
@ProtoField(id = 1)
- @NotNull(message = "SubWorkflowParams name cannot be null")
- @NotEmpty(message = "SubWorkflowParams name cannot be empty")
private String name;
@ProtoField(id = 2)
@@ -43,15 +41,36 @@ public class SubWorkflowParams {
@ProtoField(id = 4)
private Object workflowDefinition;
+ private String idempotencyKey;
+
+ private IdempotencyStrategy idempotencyStrategy;
+
+ public String getIdempotencyKey() {
+ return idempotencyKey;
+ }
+
+ public void setIdempotencyKey(String idempotencyKey) {
+ this.idempotencyKey = idempotencyKey;
+ }
+
+ public IdempotencyStrategy getIdempotencyStrategy() {
+ return idempotencyStrategy;
+ }
+
+ public void setIdempotencyStrategy(IdempotencyStrategy idempotencyStrategy) {
+ this.idempotencyStrategy = idempotencyStrategy;
+ }
+
/**
* @return the name
*/
public String getName() {
if (workflowDefinition != null) {
- return getWorkflowDef().getName();
- } else {
- return name;
+ if (workflowDefinition instanceof WorkflowDef) {
+ return ((WorkflowDef) workflowDefinition).getName();
+ }
}
+ return name;
}
/**
@@ -66,10 +85,11 @@ public void setName(String name) {
*/
public Integer getVersion() {
if (workflowDefinition != null) {
- return getWorkflowDef().getVersion();
- } else {
- return version;
+ if (workflowDefinition instanceof WorkflowDef) {
+ return ((WorkflowDef) workflowDefinition).getVersion();
+ }
}
+ return version;
}
/**
@@ -96,14 +116,19 @@ public void setTaskToDomain(Map
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ */
+package com.netflix.conductor.common.metadata.workflow;
+
+import java.util.Map;
+
+import com.netflix.conductor.annotations.protogen.ProtoField;
+import com.netflix.conductor.annotations.protogen.ProtoMessage;
+
+import jakarta.validation.constraints.NotNull;
+
+@ProtoMessage
+public class UpgradeWorkflowRequest {
+
+ public Map
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -12,19 +12,7 @@
*/
package com.netflix.conductor.common.metadata.workflow;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
-import javax.validation.Valid;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
+import java.util.*;
import com.netflix.conductor.annotations.protogen.ProtoEnum;
import com.netflix.conductor.annotations.protogen.ProtoField;
@@ -32,12 +20,16 @@
import com.netflix.conductor.common.constraints.NoSemiColonConstraint;
import com.netflix.conductor.common.constraints.OwnerEmailMandatoryConstraint;
import com.netflix.conductor.common.constraints.TaskReferenceNameUniqueConstraint;
-import com.netflix.conductor.common.metadata.BaseDef;
+import com.netflix.conductor.common.metadata.Auditable;
+import com.netflix.conductor.common.metadata.SchemaDef;
import com.netflix.conductor.common.metadata.tasks.TaskType;
+import jakarta.validation.*;
+import jakarta.validation.constraints.*;
+
@ProtoMessage
@TaskReferenceNameUniqueConstraint
-public class WorkflowDef extends BaseDef {
+public class WorkflowDef extends Auditable {
@ProtoEnum
public enum TimeoutPolicy {
@@ -76,7 +68,7 @@ public enum TimeoutPolicy {
@Max(value = 2, message = "workflowDef schemaVersion: {value} is only supported")
private int schemaVersion = 2;
- // By default, a workflow is restartable
+ // By default a workflow is restartable
@ProtoField(id = 9)
private boolean restartable = true;
@@ -85,7 +77,6 @@ public enum TimeoutPolicy {
@ProtoField(id = 11)
@OwnerEmailMandatoryConstraint
- @Email(message = "ownerEmail should be valid email address")
private String ownerEmail;
@ProtoField(id = 12)
@@ -101,6 +92,29 @@ public enum TimeoutPolicy {
@ProtoField(id = 15)
private Map
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -14,12 +14,12 @@
import java.util.Objects;
-import javax.validation.constraints.NotEmpty;
-
import com.netflix.conductor.annotations.protogen.ProtoField;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
import com.netflix.conductor.common.constraints.NoSemiColonConstraint;
+import jakarta.validation.constraints.NotEmpty;
+
@ProtoMessage
public class WorkflowDefSummary implements Comparable
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -21,16 +21,15 @@
import java.util.Map;
import java.util.Objects;
-import javax.validation.Valid;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.PositiveOrZero;
-
import com.netflix.conductor.annotations.protogen.ProtoField;
import com.netflix.conductor.annotations.protogen.ProtoMessage;
import com.netflix.conductor.common.metadata.tasks.TaskDef;
import com.netflix.conductor.common.metadata.tasks.TaskType;
-import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonGetter;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.*;
/**
* This is the task definition definied as part of the {@link WorkflowDef}. The tasks definied in
@@ -39,6 +38,32 @@
@ProtoMessage
public class WorkflowTask {
+ @ProtoMessage
+ public static class CacheConfig {
+
+ @ProtoField(id = 1)
+ private String key;
+
+ @ProtoField(id = 2)
+ private int ttlInSecond;
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public int getTtlInSecond() {
+ return ttlInSecond;
+ }
+
+ public void setTtlInSecond(int ttlInSecond) {
+ this.ttlInSecond = ttlInSecond;
+ }
+ }
+
@ProtoField(id = 1)
@NotEmpty(message = "WorkflowTask name cannot be empty or null")
private String name;
@@ -87,7 +112,6 @@ public void setTasks(List
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/run/ExternalStorageLocation.java b/common/src/main/java/com/netflix/conductor/common/run/ExternalStorageLocation.java
index 5c3071613..d94b35837 100644
--- a/common/src/main/java/com/netflix/conductor/common/run/ExternalStorageLocation.java
+++ b/common/src/main/java/com/netflix/conductor/common/run/ExternalStorageLocation.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/run/SearchResult.java b/common/src/main/java/com/netflix/conductor/common/run/SearchResult.java
index 72be415a9..43057d985 100644
--- a/common/src/main/java/com/netflix/conductor/common/run/SearchResult.java
+++ b/common/src/main/java/com/netflix/conductor/common/run/SearchResult.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/run/TaskSummary.java b/common/src/main/java/com/netflix/conductor/common/run/TaskSummary.java
index b9e0baa6c..32e3b0f71 100644
--- a/common/src/main/java/com/netflix/conductor/common/run/TaskSummary.java
+++ b/common/src/main/java/com/netflix/conductor/common/run/TaskSummary.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/run/Workflow.java b/common/src/main/java/com/netflix/conductor/common/run/Workflow.java
index 6936f9535..866d01a5e 100644
--- a/common/src/main/java/com/netflix/conductor/common/run/Workflow.java
+++ b/common/src/main/java/com/netflix/conductor/common/run/Workflow.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -15,9 +15,6 @@
import java.util.*;
import java.util.stream.Collectors;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-
import org.apache.commons.lang3.StringUtils;
import com.netflix.conductor.annotations.protogen.ProtoEnum;
@@ -27,6 +24,9 @@
import com.netflix.conductor.common.metadata.tasks.Task;
import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
+import jakarta.validation.constraints.Max;
+import jakarta.validation.constraints.Min;
+
@ProtoMessage
public class Workflow extends Auditable {
@@ -126,8 +126,47 @@ public boolean isSuccessful() {
@ProtoField(id = 25)
private Set
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -88,6 +88,9 @@ public class WorkflowSummary {
@ProtoField(id = 18)
private Set
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/utils/ConstraintParamUtil.java b/common/src/main/java/com/netflix/conductor/common/utils/ConstraintParamUtil.java
index 3f2eea503..249db9dcd 100644
--- a/common/src/main/java/com/netflix/conductor/common/utils/ConstraintParamUtil.java
+++ b/common/src/main/java/com/netflix/conductor/common/utils/ConstraintParamUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java b/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java
index 202f1f31c..7cb8ab463 100644
--- a/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java
+++ b/common/src/main/java/com/netflix/conductor/common/utils/EnvUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/utils/ExternalPayloadStorage.java b/common/src/main/java/com/netflix/conductor/common/utils/ExternalPayloadStorage.java
index abe74c734..f246b84b7 100644
--- a/common/src/main/java/com/netflix/conductor/common/utils/ExternalPayloadStorage.java
+++ b/common/src/main/java/com/netflix/conductor/common/utils/ExternalPayloadStorage.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/main/java/com/netflix/conductor/common/utils/SummaryUtil.java b/common/src/main/java/com/netflix/conductor/common/utils/SummaryUtil.java
index 76127124e..85c0e2010 100644
--- a/common/src/main/java/com/netflix/conductor/common/utils/SummaryUtil.java
+++ b/common/src/main/java/com/netflix/conductor/common/utils/SummaryUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -14,8 +14,6 @@
import java.util.Map;
-import javax.annotation.PostConstruct;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
@@ -25,6 +23,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.annotation.PostConstruct;
@Component
public class SummaryUtil {
diff --git a/common/src/main/java/com/netflix/conductor/common/utils/TaskUtils.java b/common/src/main/java/com/netflix/conductor/common/utils/TaskUtils.java
index 5e83bd73e..7bb6ab7ff 100644
--- a/common/src/main/java/com/netflix/conductor/common/utils/TaskUtils.java
+++ b/common/src/main/java/com/netflix/conductor/common/utils/TaskUtils.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -12,8 +12,21 @@
*/
package com.netflix.conductor.common.utils;
+import com.netflix.conductor.common.config.ObjectMapperProvider;
+import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
public class TaskUtils {
+ private static final ObjectMapper objectMapper;
+
+ static {
+ ObjectMapperProvider provider = new ObjectMapperProvider();
+ objectMapper = provider.getObjectMapper();
+ }
+
private static final String LOOP_TASK_DELIMITER = "__";
public static String appendIteration(String name, int iteration) {
@@ -28,4 +41,8 @@ public static String removeIterationFromTaskRefName(String referenceTaskName) {
String[] tokens = referenceTaskName.split(TaskUtils.LOOP_TASK_DELIMITER);
return tokens.length > 0 ? tokens[0] : referenceTaskName;
}
+
+ public static WorkflowDef convertToWorkflowDef(Object workflowDef) {
+ return objectMapper.convertValue(workflowDef, new TypeReference
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -13,6 +13,7 @@
package com.netflix.conductor.common.validation;
import java.util.List;
+import java.util.Map;
public class ErrorResponse {
@@ -23,6 +24,16 @@ public class ErrorResponse {
private boolean retryable;
private List
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java b/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java
index 014a118dd..b835693f9 100644
--- a/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java
+++ b/common/src/test/java/com/netflix/conductor/common/config/TestObjectMapperConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/test/java/com/netflix/conductor/common/events/EventHandlerTest.java b/common/src/test/java/com/netflix/conductor/common/events/EventHandlerTest.java
index a6a1f5cd1..db23c69dd 100644
--- a/common/src/test/java/com/netflix/conductor/common/events/EventHandlerTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/events/EventHandlerTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -16,15 +16,15 @@
import java.util.List;
import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
import org.junit.Test;
import com.netflix.conductor.common.metadata.events.EventHandler;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
diff --git a/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java b/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java
index 4c8ec4e6c..09c7077c1 100644
--- a/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/run/TaskSummaryTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/test/java/com/netflix/conductor/common/tasks/TaskDefTest.java b/common/src/test/java/com/netflix/conductor/common/tasks/TaskDefTest.java
index 41f966779..a46cf7d5c 100644
--- a/common/src/test/java/com/netflix/conductor/common/tasks/TaskDefTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/tasks/TaskDefTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -16,16 +16,16 @@
import java.util.List;
import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
import org.junit.Before;
import org.junit.Test;
import com.netflix.conductor.common.metadata.tasks.TaskDef;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -74,24 +74,6 @@ public void testTaskDef() {
assertTrue(validationErrors.contains("ownerEmail cannot be empty"));
}
- @Test
- public void testTaskDefNameAndOwnerNotSet() {
- TaskDef taskDef = new TaskDef();
- taskDef.setRetryCount(-1);
- taskDef.setTimeoutSeconds(1000);
- taskDef.setResponseTimeoutSeconds(1);
-
- Set
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/test/java/com/netflix/conductor/common/tasks/TaskTest.java b/common/src/test/java/com/netflix/conductor/common/tasks/TaskTest.java
index e392f65b5..402fcfcb0 100644
--- a/common/src/test/java/com/netflix/conductor/common/tasks/TaskTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/tasks/TaskTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -98,7 +98,7 @@ public void testDeepCopyTask() {
final Task task = new Task();
// In order to avoid forgetting putting inside the copy method the newly added fields check
// the number of declared fields.
- final int expectedTaskFieldsNumber = 40;
+ final int expectedTaskFieldsNumber = 41;
final int declaredFieldsNumber = task.getClass().getDeclaredFields().length;
assertEquals(expectedTaskFieldsNumber, declaredFieldsNumber);
diff --git a/common/src/test/java/com/netflix/conductor/common/utils/ConstraintParamUtilTest.java b/common/src/test/java/com/netflix/conductor/common/utils/ConstraintParamUtilTest.java
index d29f1744e..543035054 100644
--- a/common/src/test/java/com/netflix/conductor/common/utils/ConstraintParamUtilTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/utils/ConstraintParamUtilTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java b/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java
index 79fae89d9..435434f28 100644
--- a/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/utils/SummaryUtilTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java b/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java
index 1859c4a0d..5d9222d62 100644
--- a/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java
+++ b/common/src/test/java/com/netflix/conductor/common/workflow/SubWorkflowParamsTest.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -12,16 +12,9 @@
*/
package com.netflix.conductor.common.workflow;
-import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -30,6 +23,8 @@
import org.springframework.test.context.junit4.SpringRunner;
import com.netflix.conductor.common.config.TestObjectMapperConfiguration;
+import com.netflix.conductor.common.metadata.tasks.TaskDef;
+import com.netflix.conductor.common.metadata.tasks.TaskType;
import com.netflix.conductor.common.metadata.workflow.SubWorkflowParams;
import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
@@ -39,7 +34,6 @@
import com.fasterxml.jackson.databind.SerializationFeature;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
@ContextConfiguration(classes = {TestObjectMapperConfiguration.class})
@RunWith(SpringRunner.class)
@@ -47,22 +41,6 @@ public class SubWorkflowParamsTest {
@Autowired private ObjectMapper objectMapper;
- @Test
- public void testWorkflowTaskName() {
- SubWorkflowParams subWorkflowParams = new SubWorkflowParams(); // name is null
- ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
- Validator validator = factory.getValidator();
-
- Set
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -18,11 +18,6 @@
import java.util.Map;
import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
import org.junit.Before;
import org.junit.Test;
@@ -30,6 +25,11 @@
import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -327,12 +327,7 @@ public void testWorkflowOwnerInvalidEmail() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -16,16 +16,16 @@
import java.util.List;
import java.util.Set;
-import javax.validation.ConstraintViolation;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
import org.junit.Test;
import com.netflix.conductor.common.metadata.tasks.TaskType;
import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
diff --git a/core/build.gradle b/core/build.gradle
index d1780f10e..beef8f7a2 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2023 Conductor authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -55,7 +55,7 @@ dependencies {
testImplementation 'org.springframework.retry:spring-retry'
testImplementation project(':conductor-common').sourceSets.test.output
- testImplementation "org.codehaus.groovy:groovy-all:${revGroovy}"
+ testImplementation "org.apache.groovy:groovy-all:${revGroovy}"
testImplementation "org.spockframework:spock-core:${revSpock}"
testImplementation "org.spockframework:spock-spring:${revSpock}"
testImplementation "org.junit.vintage:junit-vintage-engine"
diff --git a/core/dependencies.lock b/core/dependencies.lock
deleted file mode 100644
index 1355a2115..000000000
--- a/core/dependencies.lock
+++ /dev/null
@@ -1,616 +0,0 @@
-{
- "annotationProcessor": {
- "org.springframework.boot:spring-boot-configuration-processor": {
- "locked": "2.7.16"
- }
- },
- "compileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "locked": "2.4.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "locked": "1.2.2"
- },
- "jakarta.activation:jakarta.activation-api": {
- "locked": "2.0.0"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "locked": "2.3.3"
- },
- "org.apache.bval:bval-jsr": {
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "locked": "15.4"
- },
- "org.springframework.boot:spring-boot-starter": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-validation": {
- "locked": "2.7.16"
- },
- "org.springframework.retry:spring-retry": {
- "locked": "1.3.4"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "runtimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "locked": "2.4.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "locked": "1.2.2"
- },
- "jakarta.activation:jakarta.activation-api": {
- "locked": "2.0.0"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "locked": "2.3.3"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "locked": "15.4"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0"
- }
- },
- "testCompileClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "locked": "2.4.0"
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "locked": "1.2.2"
- },
- "jakarta.activation:jakarta.activation-api": {
- "locked": "2.0.0"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "locked": "2.3.3"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "locked": "2.17.2"
- },
- "org.codehaus.groovy:groovy-all": {
- "locked": "3.0.19"
- },
- "org.glassfish.jaxb:jaxb-runtime": {
- "locked": "2.3.3"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "locked": "15.4"
- },
- "org.spockframework:spock-core": {
- "locked": "2.3-groovy-3.0"
- },
- "org.spockframework:spock-spring": {
- "locked": "2.3-groovy-3.0"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-validation": {
- "locked": "2.7.16"
- },
- "org.springframework.retry:spring-retry": {
- "locked": "1.3.4"
- },
- "org.yaml:snakeyaml": {
- "locked": "2.0"
- }
- },
- "testRuntimeClasspath": {
- "com.fasterxml.jackson.core:jackson-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.core:jackson-databind": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-smile": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-joda": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.fasterxml.jackson.module:jackson-module-afterburner": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.15.0"
- },
- "com.github.ben-manes.caffeine:caffeine": {
- "locked": "2.9.3"
- },
- "com.google.protobuf:protobuf-java": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.24.3"
- },
- "com.jayway.jsonpath:json-path": {
- "locked": "2.4.0"
- },
- "com.netflix.conductor:conductor-annotations": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "project": true
- },
- "com.netflix.conductor:conductor-common": {
- "project": true
- },
- "com.netflix.spectator:spectator-api": {
- "locked": "0.122.0"
- },
- "com.spotify:completable-futures": {
- "locked": "0.3.3"
- },
- "commons-io:commons-io": {
- "locked": "2.7"
- },
- "io.reactivex:rxjava": {
- "locked": "1.2.2"
- },
- "jakarta.activation:jakarta.activation-api": {
- "locked": "2.0.0"
- },
- "jakarta.xml.bind:jakarta.xml.bind-api": {
- "locked": "2.3.3"
- },
- "junit:junit": {
- "locked": "4.13.2"
- },
- "net.java.dev.jna:jna": {
- "locked": "5.13.0"
- },
- "org.apache.bval:bval-jsr": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0.6"
- },
- "org.apache.commons:commons-lang3": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "3.12.0"
- },
- "org.apache.logging.log4j:log4j-api": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-core": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-jul": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-slf4j-impl": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.apache.logging.log4j:log4j-web": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.17.2"
- },
- "org.codehaus.groovy:groovy-all": {
- "locked": "3.0.19"
- },
- "org.glassfish.jaxb:jaxb-runtime": {
- "locked": "2.3.3"
- },
- "org.junit.vintage:junit-vintage-engine": {
- "locked": "5.8.2"
- },
- "org.openjdk.nashorn:nashorn-core": {
- "locked": "15.4"
- },
- "org.spockframework:spock-core": {
- "locked": "2.3-groovy-3.0"
- },
- "org.spockframework:spock-spring": {
- "locked": "2.3-groovy-3.0"
- },
- "org.springframework.boot:spring-boot-starter-log4j2": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-test": {
- "locked": "2.7.16"
- },
- "org.springframework.boot:spring-boot-starter-validation": {
- "locked": "2.7.16"
- },
- "org.springframework.retry:spring-retry": {
- "locked": "1.3.4"
- },
- "org.yaml:snakeyaml": {
- "firstLevelTransitive": [
- "com.netflix.conductor:conductor-annotations",
- "com.netflix.conductor:conductor-common"
- ],
- "locked": "2.0"
- }
- }
-}
\ No newline at end of file
diff --git a/core/src/main/java/com/netflix/conductor/annotations/Audit.java b/core/src/main/java/com/netflix/conductor/annotations/Audit.java
index 6f1d47199..3e55d7804 100644
--- a/core/src/main/java/com/netflix/conductor/annotations/Audit.java
+++ b/core/src/main/java/com/netflix/conductor/annotations/Audit.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/annotations/Trace.java b/core/src/main/java/com/netflix/conductor/annotations/Trace.java
index 61da42cc4..cf2b9ec5e 100644
--- a/core/src/main/java/com/netflix/conductor/annotations/Trace.java
+++ b/core/src/main/java/com/netflix/conductor/annotations/Trace.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/annotations/VisibleForTesting.java b/core/src/main/java/com/netflix/conductor/annotations/VisibleForTesting.java
index 492931128..fb1ae76b6 100644
--- a/core/src/main/java/com/netflix/conductor/annotations/VisibleForTesting.java
+++ b/core/src/main/java/com/netflix/conductor/annotations/VisibleForTesting.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/LifecycleAwareComponent.java b/core/src/main/java/com/netflix/conductor/core/LifecycleAwareComponent.java
index bfe1455fb..153cea1fb 100644
--- a/core/src/main/java/com/netflix/conductor/core/LifecycleAwareComponent.java
+++ b/core/src/main/java/com/netflix/conductor/core/LifecycleAwareComponent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/WorkflowContext.java b/core/src/main/java/com/netflix/conductor/core/WorkflowContext.java
index d870761c5..559506dad 100644
--- a/core/src/main/java/com/netflix/conductor/core/WorkflowContext.java
+++ b/core/src/main/java/com/netflix/conductor/core/WorkflowContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/config/ConductorCoreConfiguration.java b/core/src/main/java/com/netflix/conductor/core/config/ConductorCoreConfiguration.java
index a09403d5f..c0e8de9ee 100644
--- a/core/src/main/java/com/netflix/conductor/core/config/ConductorCoreConfiguration.java
+++ b/core/src/main/java/com/netflix/conductor/core/config/ConductorCoreConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/config/ConductorProperties.java b/core/src/main/java/com/netflix/conductor/core/config/ConductorProperties.java
index c54b7a9de..b1bfb4adb 100644
--- a/core/src/main/java/com/netflix/conductor/core/config/ConductorProperties.java
+++ b/core/src/main/java/com/netflix/conductor/core/config/ConductorProperties.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -81,6 +81,9 @@ public class ConductorProperties {
@DurationUnit(ChronoUnit.SECONDS)
private Duration taskExecutionPostponeDuration = Duration.ofSeconds(60);
+ /** Used to enable/disable the indexing of tasks. */
+ private boolean taskIndexingEnabled = true;
+
/** Used to enable/disable the indexing of task execution logs. */
private boolean taskExecLogIndexingEnabled = true;
@@ -333,6 +336,14 @@ public void setTaskExecLogIndexingEnabled(boolean taskExecLogIndexingEnabled) {
this.taskExecLogIndexingEnabled = taskExecLogIndexingEnabled;
}
+ public boolean isTaskIndexingEnabled() {
+ return taskIndexingEnabled;
+ }
+
+ public void setTaskIndexingEnabled(boolean taskIndexingEnabled) {
+ this.taskIndexingEnabled = taskIndexingEnabled;
+ }
+
public boolean isAsyncIndexingEnabled() {
return asyncIndexingEnabled;
}
diff --git a/core/src/main/java/com/netflix/conductor/core/config/SchedulerConfiguration.java b/core/src/main/java/com/netflix/conductor/core/config/SchedulerConfiguration.java
index 364406e10..b63366649 100644
--- a/core/src/main/java/com/netflix/conductor/core/config/SchedulerConfiguration.java
+++ b/core/src/main/java/com/netflix/conductor/core/config/SchedulerConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2021 Netflix, Inc.
+ * Copyright 2021 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/dal/ExecutionDAOFacade.java b/core/src/main/java/com/netflix/conductor/core/dal/ExecutionDAOFacade.java
index d88150005..3180dfc5b 100644
--- a/core/src/main/java/com/netflix/conductor/core/dal/ExecutionDAOFacade.java
+++ b/core/src/main/java/com/netflix/conductor/core/dal/ExecutionDAOFacade.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -21,8 +21,6 @@
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-import javax.annotation.PreDestroy;
-
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -52,6 +50,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
+import jakarta.annotation.PreDestroy;
import static com.netflix.conductor.core.utils.Utils.DECIDER_QUEUE;
@@ -440,11 +439,15 @@ public List
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/event/WorkflowEvaluationEvent.java b/core/src/main/java/com/netflix/conductor/core/event/WorkflowEvaluationEvent.java
index 2b139636c..267224b56 100644
--- a/core/src/main/java/com/netflix/conductor/core/event/WorkflowEvaluationEvent.java
+++ b/core/src/main/java/com/netflix/conductor/core/event/WorkflowEvaluationEvent.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/ActionProcessor.java b/core/src/main/java/com/netflix/conductor/core/events/ActionProcessor.java
index 6b8139652..83e60fbb8 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/ActionProcessor.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/ActionProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java b/core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java
index fa7f1725b..dbdbf6b15 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/DefaultEventProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/DefaultEventQueueManager.java b/core/src/main/java/com/netflix/conductor/core/events/DefaultEventQueueManager.java
index 862287cac..a83755069 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/DefaultEventQueueManager.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/DefaultEventQueueManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/EventQueueManager.java b/core/src/main/java/com/netflix/conductor/core/events/EventQueueManager.java
index fc6a568f6..7580af79c 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/EventQueueManager.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/EventQueueManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/EventQueueProvider.java b/core/src/main/java/com/netflix/conductor/core/events/EventQueueProvider.java
index 8bd11f929..22e3cecc3 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/EventQueueProvider.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/EventQueueProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/EventQueues.java b/core/src/main/java/com/netflix/conductor/core/events/EventQueues.java
index b4ab2e388..139aad0c4 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/EventQueues.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/EventQueues.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -18,7 +18,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
@@ -37,7 +36,6 @@ public class EventQueues {
private final ParametersUtils parametersUtils;
private final Map
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,6 +17,8 @@
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
+import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;
+
public class ScriptEvaluator {
private static ScriptEngine engine;
@@ -25,7 +27,7 @@ private ScriptEvaluator() {}
/**
* Evaluates the script with the help of input provided but converts the result to a boolean
- * value.
+ * value. Set environment variable CONDUCTOR_NASHORN_ES6_ENABLED=true for Nashorn ES6 support.
*
* @param script Script to be evaluated.
* @param input Input parameters.
@@ -37,7 +39,8 @@ public static Boolean evalBool(String script, Object input) throws ScriptExcepti
}
/**
- * Evaluates the script with the help of input provided.
+ * Evaluates the script with the help of input provided. Set environment variable
+ * CONDUCTOR_NASHORN_ES6_ENABLED=true for Nashorn ES6 support.
*
* @param script Script to be evaluated.
* @param input Input parameters.
@@ -45,16 +48,30 @@ public static Boolean evalBool(String script, Object input) throws ScriptExcepti
* @return Generic object, the result of the evaluated expression.
*/
public static Object eval(String script, Object input) throws ScriptException {
- if (engine == null) {
- engine = new ScriptEngineManager().getEngineByName("Nashorn");
+ initEngine(false);
+ Bindings bindings = engine.createBindings();
+ bindings.put("$", input);
+ return engine.eval(script, bindings);
+ }
+
+ // to mock in a test
+ public static String getEnv(String name) {
+ return System.getenv(name);
+ }
+
+ public static void initEngine(boolean reInit) {
+ if (engine == null || reInit) {
+ if ("true".equalsIgnoreCase(getEnv("CONDUCTOR_NASHORN_ES6_ENABLED"))) {
+ NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
+ engine = factory.getScriptEngine("--language=es6");
+ } else {
+ engine = new ScriptEngineManager().getEngineByName("Nashorn");
+ }
}
if (engine == null) {
throw new RuntimeException(
"missing nashorn engine. Ensure you are running supported JVM");
}
- Bindings bindings = engine.createBindings();
- bindings.put("$", input);
- return engine.eval(script, bindings);
}
/**
diff --git a/core/src/main/java/com/netflix/conductor/core/events/SimpleActionProcessor.java b/core/src/main/java/com/netflix/conductor/core/events/SimpleActionProcessor.java
index 27b81edf7..a91bcad43 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/SimpleActionProcessor.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/SimpleActionProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 Netflix, Inc.
+ * Copyright 2020 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorEventQueueProvider.java b/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorEventQueueProvider.java
index 76e530101..478a8d7b2 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorEventQueueProvider.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorEventQueueProvider.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorObservableQueue.java b/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorObservableQueue.java
index 649cc7b50..e4689423d 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorObservableQueue.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/queue/ConductorObservableQueue.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/queue/DefaultEventQueueProcessor.java b/core/src/main/java/com/netflix/conductor/core/events/queue/DefaultEventQueueProcessor.java
index f1c508803..ff49a173f 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/queue/DefaultEventQueueProcessor.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/queue/DefaultEventQueueProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/queue/Message.java b/core/src/main/java/com/netflix/conductor/core/events/queue/Message.java
index b7d33961f..edefe53af 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/queue/Message.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/queue/Message.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/events/queue/ObservableQueue.java b/core/src/main/java/com/netflix/conductor/core/events/queue/ObservableQueue.java
index ecdc75921..ac5098ea7 100644
--- a/core/src/main/java/com/netflix/conductor/core/events/queue/ObservableQueue.java
+++ b/core/src/main/java/com/netflix/conductor/core/events/queue/ObservableQueue.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/exception/ConflictException.java b/core/src/main/java/com/netflix/conductor/core/exception/ConflictException.java
index 7c718ed59..21cbd6071 100644
--- a/core/src/main/java/com/netflix/conductor/core/exception/ConflictException.java
+++ b/core/src/main/java/com/netflix/conductor/core/exception/ConflictException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/exception/NonTransientException.java b/core/src/main/java/com/netflix/conductor/core/exception/NonTransientException.java
index 4af05633f..0bf93d14d 100644
--- a/core/src/main/java/com/netflix/conductor/core/exception/NonTransientException.java
+++ b/core/src/main/java/com/netflix/conductor/core/exception/NonTransientException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/exception/NotFoundException.java b/core/src/main/java/com/netflix/conductor/core/exception/NotFoundException.java
index a89b7beed..03f4d1d5c 100644
--- a/core/src/main/java/com/netflix/conductor/core/exception/NotFoundException.java
+++ b/core/src/main/java/com/netflix/conductor/core/exception/NotFoundException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/exception/TerminateWorkflowException.java b/core/src/main/java/com/netflix/conductor/core/exception/TerminateWorkflowException.java
index 366c4864f..aa8ec4a50 100644
--- a/core/src/main/java/com/netflix/conductor/core/exception/TerminateWorkflowException.java
+++ b/core/src/main/java/com/netflix/conductor/core/exception/TerminateWorkflowException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/exception/TransientException.java b/core/src/main/java/com/netflix/conductor/core/exception/TransientException.java
index 87cc9d852..c6e536b15 100644
--- a/core/src/main/java/com/netflix/conductor/core/exception/TransientException.java
+++ b/core/src/main/java/com/netflix/conductor/core/exception/TransientException.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/AsyncSystemTaskExecutor.java b/core/src/main/java/com/netflix/conductor/core/execution/AsyncSystemTaskExecutor.java
index 331a2b4ac..8751f1582 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/AsyncSystemTaskExecutor.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/AsyncSystemTaskExecutor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/DeciderService.java b/core/src/main/java/com/netflix/conductor/core/execution/DeciderService.java
index c6bf486ba..e1bacb34d 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/DeciderService.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/DeciderService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -207,7 +207,9 @@ private DeciderOutcome decide(final WorkflowModel workflow, List
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/WorkflowExecutor.java b/core/src/main/java/com/netflix/conductor/core/execution/WorkflowExecutor.java
index 6070741a2..c35547a69 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/WorkflowExecutor.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/WorkflowExecutor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -336,6 +336,18 @@ private void retry(WorkflowModel workflow) {
for (TaskModel task : workflow.getTasks()) {
switch (task.getStatus()) {
case FAILED:
+ if (task.getTaskType().equalsIgnoreCase(TaskType.JOIN.toString())
+ || task.getTaskType()
+ .equalsIgnoreCase(TaskType.EXCLUSIVE_JOIN.toString())) {
+ @SuppressWarnings("unchecked")
+ List
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/evaluators/JavascriptEvaluator.java b/core/src/main/java/com/netflix/conductor/core/execution/evaluators/JavascriptEvaluator.java
index 8f2de942d..4a22bdbe9 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/evaluators/JavascriptEvaluator.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/evaluators/JavascriptEvaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/evaluators/ValueParamEvaluator.java b/core/src/main/java/com/netflix/conductor/core/execution/evaluators/ValueParamEvaluator.java
index f1fda6178..94c34b0d0 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/evaluators/ValueParamEvaluator.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/evaluators/ValueParamEvaluator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapper.java
index d3f494f3b..4ac394de8 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/DecisionTaskMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/DoWhileTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/DoWhileTaskMapper.java
index 66e6978d7..054d854de 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/DoWhileTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/DoWhileTaskMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -18,7 +18,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.netflix.conductor.common.metadata.tasks.TaskDef;
@@ -42,7 +41,6 @@ public class DoWhileTaskMapper implements TaskMapper {
private final MetadataDAO metadataDAO;
private final ParametersUtils parametersUtils;
- @Autowired
public DoWhileTaskMapper(MetadataDAO metadataDAO, ParametersUtils parametersUtils) {
this.metadataDAO = metadataDAO;
this.parametersUtils = parametersUtils;
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/DynamicTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/DynamicTaskMapper.java
index a669cc33c..4ab0480d8 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/DynamicTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/DynamicTaskMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -19,7 +19,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.netflix.conductor.annotations.VisibleForTesting;
@@ -46,7 +45,6 @@ public class DynamicTaskMapper implements TaskMapper {
private final ParametersUtils parametersUtils;
private final MetadataDAO metadataDAO;
- @Autowired
public DynamicTaskMapper(ParametersUtils parametersUtils, MetadataDAO metadataDAO) {
this.parametersUtils = parametersUtils;
this.metadataDAO = metadataDAO;
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/EventTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/EventTaskMapper.java
index c65423a59..0ec323530 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/EventTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/EventTaskMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -17,7 +17,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.netflix.conductor.common.metadata.tasks.TaskType;
@@ -35,7 +34,6 @@ public class EventTaskMapper implements TaskMapper {
private final ParametersUtils parametersUtils;
- @Autowired
public EventTaskMapper(ParametersUtils parametersUtils) {
this.parametersUtils = parametersUtils;
}
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/ExclusiveJoinTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/ExclusiveJoinTaskMapper.java
index dc648f015..587460cf9 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/ExclusiveJoinTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/ExclusiveJoinTaskMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
diff --git a/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java b/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java
index 8d9126df8..113f9b41d 100644
--- a/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java
+++ b/core/src/main/java/com/netflix/conductor/core/execution/mapper/ForkJoinDynamicTaskMapper.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 Netflix, Inc.
+ * Copyright 2022 Conductor Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
@@ -25,15 +25,16 @@
import org.apache.commons.lang3.tuple.Pair;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.netflix.conductor.annotations.VisibleForTesting;
import com.netflix.conductor.common.metadata.tasks.TaskType;
import com.netflix.conductor.common.metadata.workflow.DynamicForkJoinTaskList;
+import com.netflix.conductor.common.metadata.workflow.SubWorkflowParams;
import com.netflix.conductor.common.metadata.workflow.WorkflowDef;
import com.netflix.conductor.common.metadata.workflow.WorkflowTask;
import com.netflix.conductor.core.exception.TerminateWorkflowException;
+import com.netflix.conductor.core.execution.tasks.SystemTaskRegistry;
import com.netflix.conductor.core.utils.IDGenerator;
import com.netflix.conductor.core.utils.ParametersUtils;
import com.netflix.conductor.dao.MetadataDAO;
@@ -43,6 +44,9 @@
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
+import static com.netflix.conductor.common.metadata.tasks.TaskType.SUB_WORKFLOW;
+import static com.netflix.conductor.common.metadata.tasks.TaskType.TASK_TYPE_SIMPLE;
+
/**
* An implementation of {@link TaskMapper} to map a {@link WorkflowTask} of type {@link
* TaskType#FORK_JOIN_DYNAMIC} to a LinkedList of {@link TaskModel} beginning with a {@link
@@ -58,19 +62,22 @@ public class ForkJoinDynamicTaskMapper implements TaskMapper {
private final ParametersUtils parametersUtils;
private final ObjectMapper objectMapper;
private final MetadataDAO metadataDAO;
+ private final SystemTaskRegistry systemTaskRegistry;
+
private static final TypeReference
+ * amqp_queue:myQueue?deliveryMode=1&autoDelete=true&exclusive=true
+ *
+ *
+ * Example for exchange:
+ *
+ *
+ * amqp_exchange:myExchange?bindQueueName=myQueue&exchangeType=topic&routingKey=myRoutingKey&exclusive=true
+ *
+ *
+ * @param queueURI
+ * @return
+ */
+ public final AMQPSettings fromURI(final String queueURI) {
+ final Matcher matcher = URI_PATTERN.matcher(queueURI);
+ if (!matcher.matches()) {
+ throw new IllegalArgumentException("Queue URI doesn't matches the expected regexp");
+ }
+
+ // Set name of queue or exchange from group "name"
+ LOGGER.info("Queue URI:{}", queueURI);
+ queueOrExchangeName = matcher.group("name");
+ eventName = queueURI;
+ if (matcher.groupCount() > 1) {
+ final String queryParams = matcher.group("params");
+ if (StringUtils.isNotEmpty(queryParams)) {
+ // Handle parameters
+ Arrays.stream(queryParams.split("\\s*\\&\\s*"))
+ .forEach(
+ param -> {
+ final String[] kv = param.split("\\s*=\\s*");
+ if (kv.length == 2) {
+ if (kv[0].equalsIgnoreCase(
+ String.valueOf(PARAM_EXCHANGE_TYPE))) {
+ String value = kv[1];
+ if (StringUtils.isEmpty(value)) {
+ throw new IllegalArgumentException(
+ "The provided exchange type is empty");
+ }
+ exchangeType = value;
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_QUEUE_NAME)))) {
+ exchangeBoundQueueName = kv[1];
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_ROUTING_KEY)))) {
+ String value = kv[1];
+ if (StringUtils.isEmpty(value)) {
+ throw new IllegalArgumentException(
+ "The provided routing key is empty");
+ }
+ routingKey = value;
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_DURABLE)))) {
+ durable = Boolean.parseBoolean(kv[1]);
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_EXCLUSIVE)))) {
+ exclusive = Boolean.parseBoolean(kv[1]);
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_AUTO_DELETE)))) {
+ autoDelete = Boolean.parseBoolean(kv[1]);
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_DELIVERY_MODE)))) {
+ setDeliveryMode(Integer.parseInt(kv[1]));
+ }
+ if (kv[0].equalsIgnoreCase(
+ (String.valueOf(PARAM_MAX_PRIORITY)))) {
+ arguments.put("x-max-priority", Integer.valueOf(kv[1]));
+ }
+ }
+ });
+ }
+ }
+ return this;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) return true;
+ if (!(obj instanceof AMQPSettings)) return false;
+ AMQPSettings other = (AMQPSettings) obj;
+ return Objects.equals(arguments, other.arguments)
+ && autoDelete == other.autoDelete
+ && Objects.equals(contentEncoding, other.contentEncoding)
+ && Objects.equals(contentType, other.contentType)
+ && deliveryMode == other.deliveryMode
+ && durable == other.durable
+ && Objects.equals(eventName, other.eventName)
+ && Objects.equals(exchangeType, other.exchangeType)
+ && exclusive == other.exclusive
+ && Objects.equals(queueOrExchangeName, other.queueOrExchangeName)
+ && Objects.equals(exchangeBoundQueueName, other.exchangeBoundQueueName)
+ && Objects.equals(queueType, other.queueType)
+ && Objects.equals(routingKey, other.routingKey)
+ && sequentialProcessing == other.sequentialProcessing;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ arguments,
+ autoDelete,
+ contentEncoding,
+ contentType,
+ deliveryMode,
+ durable,
+ eventName,
+ exchangeType,
+ exclusive,
+ queueOrExchangeName,
+ exchangeBoundQueueName,
+ queueType,
+ routingKey,
+ sequentialProcessing);
+ }
+
+ @Override
+ public String toString() {
+ return "AMQPSettings [queueOrExchangeName="
+ + queueOrExchangeName
+ + ", eventName="
+ + eventName
+ + ", exchangeType="
+ + exchangeType
+ + ", exchangeQueueName="
+ + exchangeBoundQueueName
+ + ", queueType="
+ + queueType
+ + ", routingKey="
+ + routingKey
+ + ", contentEncoding="
+ + contentEncoding
+ + ", contentType="
+ + contentType
+ + ", durable="
+ + durable
+ + ", exclusive="
+ + exclusive
+ + ", autoDelete="
+ + autoDelete
+ + ", sequentialProcessing="
+ + sequentialProcessing
+ + ", deliveryMode="
+ + deliveryMode
+ + ", arguments="
+ + arguments
+ + "]";
+ }
+
+ public String getEventName() {
+ return eventName;
+ }
+
+ /**
+ * @return the queueType
+ */
+ public String getQueueType() {
+ return queueType;
+ }
+
+ /**
+ * @return the sequentialProcessing
+ */
+ public boolean isSequentialProcessing() {
+ return sequentialProcessing;
+ }
+}
diff --git a/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/ConnectionType.java b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/ConnectionType.java
new file mode 100644
index 000000000..0b28ce273
--- /dev/null
+++ b/amqp/src/main/java/com/netflix/conductor/contribs/queue/amqp/util/ConnectionType.java
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2023 Conductor Authors.
+ * > children() {
Collection
> workflowTaskLists = new LinkedList<>();
@@ -695,6 +756,14 @@ public WorkflowTask get(String taskReferenceName) {
return null;
}
+ public Map
> ListOfWorkflowTasks =
new TypeReference<>() {};
- @Autowired
public ForkJoinDynamicTaskMapper(
IDGenerator idGenerator,
ParametersUtils parametersUtils,
ObjectMapper objectMapper,
- MetadataDAO metadataDAO) {
+ MetadataDAO metadataDAO,
+ SystemTaskRegistry systemTaskRegistry) {
this.idGenerator = idGenerator;
this.parametersUtils = parametersUtils;
this.objectMapper = objectMapper;
this.metadataDAO = metadataDAO;
+ this.systemTaskRegistry = systemTaskRegistry;
}
@Override
@@ -126,92 +133,123 @@ public List
, Map
, Map
, Map
, Map