Skip to content

Upgrade deprecated ES/AWS libraries #9244

@vedosis

Description

@vedosis

Expected Behavior

Temporal Server should not be depending on deprecated libraries.

Actual Behavior

AWS SDK for Go v1

  • GitHub repo archived on July 31, 2025. Banner reads: "This repository was archived by the owner on Jul 31, 2025" and "This SDK has reached end-of-support... It will not receive further updates."
  • Official AWS blog announcement "Announcing end-of-support for AWS SDK for Go (v1) effective July 31, 2025". Maintenance mode began July 31, 2024; end-of-support July 31, 2025.
  • AWS SDK version lifecycle matrix shows the v1 Go SDK status

olivere/elastic

Steps to Reproduce the Problem

I couldn't decide between a bug and a feature. I'm went the bug direction because these are WAY out of date. So... reproduction steps are to use your eyes?

Specifications

  • Version: latest
  • Platform: all

Recommendations

  • AWS is easy, upgrade to v2
  • olivere/elastic is a little more interesting, but probably using the elastic/go-elasticsearch library is the way to go. A combination of AWS+ES would satisfy the original intent of olivere/elastic.


Other deprecated Libs

I was looking at this from a very specific direction, but @claude and I found some other dependencies it would be worth processing:

Tier 1: Archived/Deprecated Direct Dependencies

These libraries are explicitly archived or deprecated and should be migrated.

github.com/pkg/errors v0.9.1 -> stdlib errors/fmt

  • Status: Archived by owner (Dec 2021). Read-only, no patches.
  • Last release: v0.9.1 (2020)
  • Replacement: fmt.Errorf("context: %w", err) with errors.Is()/errors.As() (stdlib since Go 1.13)
  • Effort: High -- likely widespread usage across the codebase.
  • Ref: https://github.com/pkg/errors

github.com/mitchellh/mapstructure v1.5.0 -> go-viper/mapstructure/v2

  • Status: Archived by Mitchell Hashimoto (Jul 2024). Read-only.
  • Replacement: github.com/go-viper/mapstructure/v2 -- the blessed fork maintained by the Viper project. API-compatible. A replace directive can be used as an interim step.
  • Effort: Low-Medium.
  • Ref: https://github.com/mitchellh/mapstructure

gopkg.in/validator.v2 v2.0.1 -> go-playground/validator/v10

  • Status: Unmaintained. No commits since Apr 2022, open PRs ignored.
  • Replacement: github.com/go-playground/validator/v10 -- the de facto standard for Go struct validation (23,000+ importers).
  • Effort: Medium -- API differences between the two libraries.
  • Ref: https://pkg.go.dev/gopkg.in/validator.v2

Tier 2: Major Version Behind (Direct Dependencies)

These dependencies have newer major versions available. The current versions receive security patches at best.

github.com/golang-jwt/jwt/v4 v4.5.2 -> v5

github.com/urfave/cli v1.22.16 -> v3

  • Status: v1 is in security-only maintenance mode. v3 is stable (v3.6.1 released Nov 2025).
  • Note: The project also uses urfave/cli/v2. Consider consolidating directly to v3.
  • Effort: Medium-High -- significant API changes between v1 and v3.
  • Ref: https://cli.urfave.org/v3/getting-started/

github.com/gocql/gocql v1.7.0 -> apache/cassandra-gocql-driver/v2

github.com/sony/gobreaker v1.0.0 -> v2

  • Status: v2 is actively maintained (v2.4.0, Jan 2026) with generics support and new features (distributed circuit breaker, Redis store). v1 receives no development.
  • Effort: Low.
  • Ref: https://github.com/sony/gobreaker

github.com/olekukonko/tablewriter v0.0.5 -> v1.1.3+

  • Status: v0.0.5 is labeled "legacy" on pkg.go.dev. v1.1.3 is current.
  • Key changes: SetHeader() -> Header(), AppendBulk() -> Bulk(), constructor uses functional options.
  • Effort: Medium.
  • Ref: https://github.com/olekukonko/tablewriter

github.com/lib/pq v1.10.9 -> remove (pgx already in use)

  • Status: Maintenance mode. README says not actively developed. Recommends jackc/pgx.
  • Note: jackc/pgx/v5 is already a direct dependency. lib/pq usage can likely be fully migrated to pgx.
  • Existing issue: Consider switch to jackc/pgx from lib/pq #1775
  • Effort: Medium.

github.com/gorilla/mux v1.8.1 -> net/http or go-chi/chi

  • Status: Was archived Dec 2022, unarchived mid-2024 under new maintainers, but activity remains minimal. No releases since v1.8.1 (Oct 2023).
  • Replacement: Go 1.22+ net/http.ServeMux now supports method-based routing and path parameters, covering most gorilla/mux use cases.
  • Effort: Medium.

github.com/cactus/go-statsd-client/v5 -> v6

Tier 3: Archived/Deprecated Indirect Dependencies

These are transitive dependencies. They can't be directly fixed but should be tracked for awareness and upstream pressure.

Library Status Replacement Likely Source
github.com/gogo/protobuf v1.3.2 Deprecated (marked in repo title), last release Jan 2021 google.golang.org/protobuf ringpop-go, tchannel-go
github.com/golang/mock v1.6.0 Archived Jun 2023 go.uber.org/mock (already a direct dep) Transitive
github.com/opentracing/opentracing-go v1.2.0 Archived May 2023, officially deprecated go.opentelemetry.io/otel (already used) ringpop-go
github.com/json-iterator/go v1.1.12 Archived Dec 2025 encoding/json (stdlib) Kubernetes client libs, Uber packages
github.com/facebookgo/clock Archived Mar 2019 jonboulle/clockwork ringpop-go
github.com/benbjohnson/clock v1.3.5 Archived May 2023 jonboulle/clockwork ringpop-go or fx
github.com/rcrowley/go-metrics Archived Apr 2025 OpenTelemetry or Prometheus client gocql
github.com/uber-common/bark v1.3.0 Unmaintained since Mar 2020 go.uber.org/zap (already used) ringpop-go, tchannel-go
github.com/hailocab/go-hostpool Unmaintained since Jan 2016 bitly/go-hostpool gocql
github.com/sirupsen/logrus v1.9.3 Maintenance mode per README log/slog or go.uber.org/zap Multiple transitive
github.com/robfig/cron v1.2.0 Unmaintained since Jan 2021 robfig/cron/v3 (already a direct dep) ringpop-go

Note: Many of these indirect dependencies are pulled in by temporalio/ringpop-go and temporalio/tchannel-go. As Temporal phases out Ringpop (per its README: "This project is no longer under active development"), several of these transitive issues will resolve naturally.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions