Files
zt/changelogs/CHANGELOG.0.31.md
zeekay 241625e7d9 rename: ziti → zt across all paths
- Repo names: ziti-* → zt-*
- Go modules: github.com/hanzozt/ziti → github.com/hanzozt/zt
- Docker images: hanzozt/ziti-* → hanzozt/zt-*
- C/Java/JS symbols: ziti_* → zt_*
- File and directory names updated
2026-02-18 18:34:19 -08:00

11 KiB

Release 0.31.4

What's New

  • Bug fix for a data flow stall which is especially likely to happen on circuits with single router paths

Thanks

  • @marvkis - for providing high quality debug data which made tracking down a couple of flow control stall issues much easier

Component Updates and Bug Fixes

Release 0.31.3

What's New

  • Services Max Idle Time
  • Add/Remove Peer and Transfer Leadership via REST

Service Max Idle Time

A max idle time can now be configured on services. The default value of 0 indicates that no maximum will be enforced. A circuit is considered idle when no traffic is flowing across through the initiating or terminating router.

zt edge create service test-service --max-idle-time 5m

Note that the idle time calculation is done on the router, so if max idle time on a service is less than the configured scan interval on the router, it make take longer than expected for idle circuits to be removed.

Raft Cluster Management via REST

The controller now allows some Raft cluster management operations to be performed via REST.

NOTE: If your cluster is not bootstrapped yet, the REST API won't be available. These will only work on a bootstrapped cluster!

The following operations are now supported:

  • Add member
  • Remove member
  • Transfer leadership
zt fabric raft add-member tls:localhost:6363
zt fabric raft add-member tls:localhost:6464
zt fabric raft transfer-leadership 
zt fabric raft transfer-leadership ctrl3
zt fabric raft remove-member ctrl2
zt fabric raft remove-member ctrl3

Component Updates and Bug Fixes

Release 0.31.2

What's New

  • Go version updated from 1.20 to 1.21

Release 0.31.1

What's New

  • SDK Hosting Improvements
  • Terminator validation utility
  • Circuit/Link query support

SDK Hosting Improvements

In previous versions of Hanzo ZT, if many SDK clients were attempting to establish hosting, the controller could get overwhelmed. In this release, routers will use the rate limiter pool introduced in 0.27.6 when creating terminators on behalf of sdk clients hosting applications. Additionally, routers now have the ability to verify terminator state with the sdk, if the sdk supports it. In general, hosting large numbers of services using the sdk should now be less suceptible to thundering herd issues.

Manual Terminator Validation

There is a new CLI command available to validate terminator state. This is primarily a developer tool to validate that terminator setup logic is correct. However it may also be used to diagnose and resolve issues with production systems, should the need arise.

zt fabric validate terminators

Previously listing circuit and links always showed the full list. This is because these types are in memory only and are not stored in the bbolt datastore. There's now basic support for querying in-memory types and circuits and links can now be filtered/paged/sorted the same as other entity types.

Component Updates and Bug Fixes

Release 0.31.0

What's New

  • Rate limited for model changes

Rate Limiter for Model Changes

To prevent the controller from being overwhelmed by a flood of changes, a rate limiter can be enabled in the configuration file. A maximum number of queued changes can also be configured. The rate limited is disabled by default for now. If not specified the default number of queued changes is 100.

When the rate limit is hit, an error will be returned. If the request came in from the REST API, the response will use HTTP status code 429 (too many requests).

The OpenAPI specs have been updated, so if you're using a generated client to make REST calls, it's recommended that you regenerate your client.

commandRateLimiter:
    enabled:   true
    maxQueued: 100

If the rate limiter is enabled, the following metrics will be produced:

  • command.limiter.queued_count - gauge of the current number of queued operations
  • command.limiter.work_timer - timer for operations. Includes the following:
    • A histogram of how long operations take to complete
    • A meter showing that rate at which operations are executed
    • A count of how many operations have been executed

Component Updates and Bug Fixes