Files
antigravity-skills-reference/skills/dbos-golang/references/advanced-versioning.md

1.8 KiB

title, impact, impactDescription, tags
title impact impactDescription tags
Use Versioning for Blue-Green Deployments LOW Enables safe deployment of new code versions alongside old ones advanced, versioning, blue-green, deployment

Use Versioning for Blue-Green Deployments

Set ApplicationVersion in configuration to tag workflows with a version. DBOS only recovers workflows matching the current application version, preventing code mismatches during recovery.

Incorrect (deploying new code that breaks in-progress workflows):

ctx, _ := dbos.NewDBOSContext(context.Background(), dbos.Config{
	AppName:     "my-app",
	DatabaseURL: os.Getenv("DBOS_SYSTEM_DATABASE_URL"),
	// No version set - version auto-computed from binary hash
	// Old workflows will be recovered with new code, which may break
})

Correct (versioned deployment):

ctx, _ := dbos.NewDBOSContext(context.Background(), dbos.Config{
	AppName:            "my-app",
	DatabaseURL:        os.Getenv("DBOS_SYSTEM_DATABASE_URL"),
	ApplicationVersion: "2.0.0",
})

By default, the application version is automatically computed from a SHA-256 hash of the executable binary. Set it explicitly for more control.

Blue-green deployment strategy:

  1. Deploy new version (v2) alongside old version (v1)
  2. Direct new traffic to v2 processes
  3. Let v1 processes "drain" (complete in-progress workflows)
  4. Check for remaining v1 workflows:
oldWorkflows, _ := dbos.ListWorkflows(ctx,
	dbos.WithAppVersion("1.0.0"),
	dbos.WithStatus([]dbos.WorkflowStatusType{dbos.WorkflowStatusPending}),
)
  1. Once all v1 workflows are complete, retire v1 processes

Fork to new version (for stuck workflows):

// Fork a workflow from a failed step to run on the new version
handle, _ := dbos.ForkWorkflowstring

Reference: Versioning