1.11.x Release Notes
This page summarizes notable changes in the 1.11 minor series. Patch-level releases are listed below.
1.11 focuses on higher throughput, production-friendly logging, and improved Redis connectivity under load. The foundation has been optimized substantially.
1.11.11
New
- Redis: Added
server.redis.protocolconfiguration option. - Why: This allows forcing the Redis protocol version (2 or 3). It was introduced to improve stability during high-load "Pipeline BruteForce" operations. In these scenarios, RESP3 asynchronous push messages (like invalidations) could arrive within a pipeline, potentially causing parsing failures. Forcing the protocol to 2 provides a stable fallback.
1.11.10
Lua
- OpenTelemetry: Added
finish()alias forspan:end(). In Lua,endis a reserved keyword, which makes calling:end()directly a syntax error. - OpenTelemetry: Documented
tr:with_span(name, function, options)which was available since 1.11.5 but missing from the API documentation.
Documentation
- Lua API: Updated
nauthilus_opentelemetrydocumentation withwith_spanand the:end()keyword warning.
1.11.5
New
- Tracing: OpenTelemetry tracing via
server.insights.tracingwith OTLP/HTTP exporter, configurable sampling, propagators, and Redis client instrumentation. - Redis compatibility: New options under
server.redisto fine-tune RESP3 features and compatibility:identity_enabledto toggleCLIENT SETINFO.maint_notifications_enabledto toggleCLIENT MAINT_NOTIFICATIONS(RESP3 push).client_trackingblock to enable RESP3 client-side caching withbcast,noloop,opt_in/opt_out, andprefixes.
- Lua: New module
nauthilus_opentelemetryallowing scripts to create spans, set attributes/events/status, use baggage, and inject/extract headers.
Documentation
- New guide: Tracing (OpenTelemetry) with configuration and examples.
- Server Configuration updated with
server.insights.tracingand Redis compatibility options. - Lua API extended with
nauthilus_opentelemetryusage.
See also
- Guides → Tracing (OpenTelemetry): /docs/guides/tracing-opentelemetry
- Configuration → Server Configuration: /docs/configuration/server-configuration
- Lua API → OpenTelemetry: /docs/lua-api/opentelemetry
Upgrade notes
- Tracing is opt-in; defaults remain disabled. When enabling Redis tracing, consider sampling to control volume.
- RESP3 is preferred by the client to support push notifications. If you use legacy proxies that don’t support RESP3 features, keep the new Redis options disabled.
1.11.4
New
- Async REST endpoints for long-running cleanup jobs:
DELETE /api/v1/cache/flush/asyncenqueues a user cache flush and returns202 Acceptedwith ajobId.DELETE /api/v1/bruteforce/flush/asyncenqueues a brute-force cleanup for an IP and returns202 Acceptedwith ajobId.GET /api/v1/async/jobs/{jobId}returns the job status (QUEUED|INPROGRESS|DONE|ERROR) andresultCount.
- Debugging: New DbgModule
accountfor account lookup/mapping related operations. - Redis: Client Tracking configuration (
server.redis.client_tracking) to enable RESP3 CLIENT TRACKING with flags likebcast,noloop,opt_in/opt_out, andprefixes. - Lua Redis API:
redis_setnow supports full option set (NX, XX, GET, KEEPTTL, EX, PX, EXAT, PXAT) via an options table while keeping backward compatibility with a numeric TTL. - Lua Redis API: New
redis_hmget(handle, key, field1, field2, ...)returning a tablefield -> value(missing fields arenil). - Redis Pipeline:
hmgetsupported inredis_pipeline.
Documentation
- REST API updated with the new async endpoints and the async job status endpoint.
- Server Configuration updated for
server.redis.client_trackingincluding examples. - Lua Redis API updated for
redis_setoptions and newredis_hmget. - Full Configuration Example updated to include a
client_trackingblock.
Deprecated/Removed
- In‑process request de‑duplication has been removed due to persistent instability. The following configuration keys are deprecated and ignored starting with v1.11.4:
server.dedup.in_process_enabledserver.timeouts.singleflight_workExisting configurations containing these keys do not fail, but the settings have no effect.
See also
- REST API → Cleanup and Async Jobs: /docs/rest-api
- Configuration → Server Configuration: /docs/configuration/server-configuration
- Lua API → Redis: /docs/lua-api/redis
- Full Configuration Example: /docs/configuration/full-example
1.11.3
New
- Redis: In‑process account name cache (server.redis.account_local_cache) to reduce repeated lookups for frequently used users. Disabled by default.
- Redis: Client‑side command batching (server.redis.batching) to pipeline small commands and reduce round‑trips under load. Disabled by default.
- HTTP middlewares: Feature switches to enable/disable individual middlewares (server.middlewares), including logging, limit, recovery, trusted_proxies, request_decompression, response_compression, and metrics. Enabled by default unless explicitly set to false.
Documentation
- Server Configuration updated with defaults and YAML examples for the new Redis features.
- Full Configuration Example updated accordingly.
See also
- Configuration → Server Configuration → HTTP Middlewares: /docs/configuration/server-configuration#servermiddlewares
- Configuration → Server Configuration → Account Local Cache: /docs/configuration/server-configuration#serverredisaccount_local_cache
- Configuration → Server Configuration → Batching: /docs/configuration/server-configuration#serverredisbatching
- Full Configuration Example: /docs/configuration/full-example
Performance and internal changes
- Redis cleanup paths switched from
DELtoUNLINKwhere safe to avoid blocking on large keys. - Extensive use of pipelining for multi-key deletes to reduce Redis round-trips; improvements are effective in both standalone and cluster deployments.
Upgrade notes
- The async endpoints are additive and do not change the behavior of existing synchronous endpoints.
- Consumers performing large cleanup operations should prefer the
/asyncvariants and poll the job status endpoint to avoid client timeouts.
Highlights
- New log level: notice
- Emits essential, high-signal events suited for production.
- Redis connection and timeout tuning
- Better pooling defaults and improved behavior under network hiccups; clear guidance for pool sizing.
- Core runtime optimizations
- Significantly reduced overhead in hot paths for higher request throughput.
Configuration changes (New in v1.11.0)
Logging
- server.log.level supports a new level: notice
- Intended for production to keep logs concise while preserving operational visibility.
Example:
server:
log:
level: notice
Redis
- Connection handling tuned for busy deployments.
- Time budget enforcement aligns with server.timeouts.redis_read and server.timeouts.redis_write.
- Guidance for pool tuning added to Server Configuration.
See:
- Configuration → Server Configuration → Redis → Connection and timeout tuning
- Configuration → Server Configuration → Timeouts
Performance
- Internal subsystems refactored to reduce allocations and contention in authentication flows.
- Improved connection reuse and reduced churn for Redis workloads.
Compatibility
- No breaking configuration changes compared to 1.10.
- The new notice level is additive and fully backward compatible.
Lua runtime loading
- The legacy dynamic_loader has been removed. Calls to dynamic_loader are now no-ops and emit a warning to the log if invoked. Use plain
require("<module>")in Lua scripts.
Upgrade notes
- Review your logging configuration and consider using notice in production.
- Revisit Redis pool_size and idle_pool_size if you previously tuned around connection churn.
- Validate timeouts for redis_read and redis_write against your network conditions.