Skip to content

Bump tower-java-sdk from 1.101.0 to 1.107.0#578

Merged
JaimeSeqLabs merged 9 commits intomasterfrom
PLAT-3950/update-platform-sdk
Feb 17, 2026
Merged

Bump tower-java-sdk from 1.101.0 to 1.107.0#578
JaimeSeqLabs merged 9 commits intomasterfrom
PLAT-3950/update-platform-sdk

Conversation

@JaimeSeqLabs
Copy link
Contributor

@JaimeSeqLabs JaimeSeqLabs commented Feb 11, 2026

Description

Bump tower-java-sdk from 1.101.0 to 1.107.0 and update the codebase to match the new SDK types.

Affected commands

  • pipelines view — type change: LaunchLaunchDbDto
  • pipelines export — type change: LaunchLaunchDbDto
  • pipelines update — type change: LaunchLaunchDbDto
  • launch — type change: LaunchLaunchDbDto
  • runs view — type change: WorkflowWorkflowMaxDbDto
  • runs dump — type changes: LaunchLaunchDbDto, WorkflowWorkflowMaxDbDto
  • runs relaunch — type change: WorkflowWorkflowMaxDbDto
  • ModelHelper.createLaunchRequest() — parameter type LaunchLaunchDbDto
  • PipelinesView response — field type LaunchLaunchDbDto

Workaround for Task.exit deserialization (PLAT-4625)

The Platform API returns the task exit code as a string ("exit": "0") while the SDK model declares it as Integer. The SDK configures Jackson with ALLOW_COERCION_OF_SCALARS=false, which rejects string-to-integer coercion. This was masked in previous CLI builds that bundled older Jackson versions with different coercion defaults.

This PR adds a targeted Jackson mixin (TaskExitMixin + LenientIntegerDeserializer) that applies lenient deserialization only to the Task.exit field, without changing global behavior. The workaround is marked with FIXME comments linking to PLAT-4625 and should be removed once the Platform-side fix is deployed.

Guidelines for testing

The main focus should be ensuring that passing null as versionId to the describePipelineLaunch endpoint returns the default pipeline version, maintaining backward-compatible behavior. The backend treats null versionId by fetching the default version, so no functional change should be observed.

1. Pipeline view

./tw pipelines view -n <pipeline_name> -w <org>/<workspace>

Verify the pipeline details (ID, name, description, repository, compute env, labels) and configuration are displayed correctly — same output as before the change.

Expected output
  Pipeline at [seqeratest_JaimeInc / Wsp] workspace:

    --------------+--------------------------------------
     ID           | 30153220095308
     Name         | HelloOptimization
     Description  |
     Repository   | https://github.com/nextflow-io/hello
     Compute env. | AWSCE
     Labels       | can_be_deleted=true,owner=jaime

  Configuration:

     {
       "id" : "7ZHVhQD94mVhiiUj8lRnBa",
       "computeEnvId" : "1M7Np6pDIWIyJzEcKBHXVq",
       "pipeline" : "https://github.com/nextflow-io/hello",
       "workDir" : "s3://jaime-testing",
       "revision" : "master",
       "userSecrets" : [ ],
       "workspaceSecrets" : [ ],
       "resume" : false,
       "pullLatest" : false,
       "stubRun" : false,
       "optimizationId" : "fAdrnFUTzkQEdCWS",
       "optimizationTargets" : "cpus, memory",
       "dateCreated" : "2024-06-18T15:04:39Z"
     }

2. Pipeline export

./tw pipelines export -n <pipeline_name> -w <org>/<workspace>

Verify the exported JSON contains the correct launch configuration. Compare the output against an export produced with the previous CLI version to confirm no differences.

Expected output
{
  "icon" : "https://cloud.seqera.io/api/avatars/42CjYsReft3lQDqlbtSk0j",
  "launch" : {
    "id" : "7ZHVhQD94mVhiiUj8lRnBa",
    "computeEnvId" : "1M7Np6pDIWIyJzEcKBHXVq",
    "pipeline" : "https://github.com/nextflow-io/hello",
    "workDir" : "s3://jaime-testing",
    "revision" : "master",
    "userSecrets" : [ ],
    "workspaceSecrets" : [ ],
    "resume" : false,
    "pullLatest" : false,
    "stubRun" : false,
    "optimizationId" : "fAdrnFUTzkQEdCWS",
    "optimizationTargets" : "cpus, memory",
    "dateCreated" : "2024-06-18T15:04:39Z"
  }
}

3. Pipeline update

./tw pipelines update -n <pipeline_name> -w <org>/<workspace> --description "Updated description"

Verify the pipeline is updated successfully and the description change is reflected when viewing the pipeline.

Expected output
Pipeline 'HelloOptimization' updated at [seqeratest_JaimeInc / Wsp] workspace

4. Launch pipeline

./tw launch <pipeline_name> -w <org>/<workspace>

Verify the pipeline launches successfully and the run appears in the workspace with the correct configuration.

Expected output
Workflow <run_id> submitted at [seqeratest_JaimeInc / Wsp] workspace.

5. Runs view

./tw runs view -i <run_id> -w <org>/<workspace>

Verify the run details (status, workflow info, progress, general info) are displayed correctly — same output as before the change.

Expected output
  Run at [seqeratest_JaimeInc / Wsp] workspace:

    General
    ---------------------+------------------------------------------
     ID                  | w500oTt9rzi1s
     Operation ID        | 5a4002d4-1bee-4b66-8865-14232c47cad9
     Run name            | cranky_joliot
     Status              | SUCCEEDED
     Starting date       | Mon, 8 Sep 2025 12:54:22 GMT
     Commit ID           | 2ce0b0e2943449188092a0e25102f0dadc70cb0a
     Session ID          | 6775dd0a-3a4e-4a48-a7f2-1dcf2c37b2c5
     Username            | jaime-munoz
     Workdir             | s3://jaime-testing/scratch/w500oTt9rzi1s
     Container           | quay.io/nextflow/bash
     Executors           | awsbatch
     Compute Environment | AWSCE
     Nextflow Version    | 25.04.6
     Labels              | can_be_deleted=true,owner=jaime

6. Runs dump

./tw runs dump -i <run_id> -w <org>/<workspace> -o dump.tar.gz --silent

Extract the tar.gz and verify all expected files are present:

Expected archive contents
service-info.json
workflow.json
workflow-metadata.json
workflow-load.json
workflow-launch.json
workflow-metrics.json
workflow-tasks.json
nextflow.log

Note: This test exercises the TaskExitMixin workaround (PLAT-4625). Without it, the workflow-tasks.json step fails with Error reading entity from input stream.

7. Runs relaunch

./tw runs relaunch -i <run_id> -w <org>/<workspace>

Verify the relaunch creates a new run with the same configuration as the original.

Expected output
Workflow <run_id> submitted at [seqeratest_JaimeInc / Wsp] workspace.

8. Unit tests

./gradlew test

Verify all existing tests pass, specifically PipelinesCmdTest and RunsCmdTest which have been updated to use the new types.

Copy link
Contributor

@tcrespog tcrespog left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think about adding a test for the number/string coercion by preparing a sample JSON?

Copy link
Contributor

@swingingsimian swingingsimian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The run dump still fails for me:

➜  tower-cli git:(PLAT-3950/update-platform-sdk) ✗ ./build/native/nativeCompile/tw runs dump -i 5JRh1jMwey6oEG  -w pipelines-playground/Versioning -o dump.tar.gz
- Tower info
- Workflow general information
- Workflow metadata
- Workflow load data
- Workflow launch
- Workflow metrics
- Task details

 ERROR: Error reading entity from input stream.

@tcrespog
Copy link
Contributor

tcrespog commented Feb 16, 2026

The run dump still fails for me:

Does it work when running through the JAR? Or only natively? Worth noting that the "local platform", usually used locally for testing, is not supported in the CLI either and also triggers that message.

@swingingsimian
Copy link
Contributor

It works running through ./tw (JAR), rather than binary. I think a case where the trace-agent didn't pick up the execution path of the new mixin/deserializer.

@JaimeSeqLabs
Copy link
Contributor Author

It works running through ./tw (JAR), rather than binary. I think a case where the trace-agent didn't pick up the execution path of the new mixin/deserializer.

Exactly this. The reflection config was missing for those classes.

I added them to the file, try again pls.

Copy link
Contributor

@swingingsimian swingingsimian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dump now works as expected using binary:

./build/native/nativeCompile/tw  runs dump -i 2hMNfONEbeIG9J  -w pipelines-playground/pipelines  -o dump.tar.gz 
- Tower info
- Workflow general information
- Workflow metadata
- Workflow load data
- Workflow launch
- Workflow metrics
- Task details
- Workflow nextflow.log

  Pipeline run '2hMNfONEbeIG9J' at [pipelines-playground / pipelines] workspace details dump at 'dump.tar.gz' 

@JaimeSeqLabs JaimeSeqLabs merged commit d1e90dc into master Feb 17, 2026
10 checks passed
@JaimeSeqLabs JaimeSeqLabs deleted the PLAT-3950/update-platform-sdk branch February 17, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants