v1.23.0
What's Changed
Embeddable package
This release switches from the zap
logging package to the standard slog
.
If the logger was configured by Go programs that import github.com/FerretDB/FerretDB/ferretdb
package, they should configure the SLogger
field instead.
Setting the old Logger
field will make the program panic and make the issue immediately noticeable.
The next release will completely remove zap
and rename SLogger
to just Logger
.
Initial OpenTelemetry tracing support
This release adds initial support for sending OpenTelemetry traces to the OTLP endpoint.
The set of spans and their attributes is not stable yet and will change over time.
All improvements in observability in this release (OpenTelemetry traces, Kubernetes probes, debug archive)
are documented there.
Experimental Systemd configuration in .deb
and .rpm
packages
This release adds initial unit files for systemd
that auto-start FerretDB.
They are likely to change in the future in incompatible ways; for example, we may switch to using a non-root user.
New Features π
- Add Kubernetes liveness probe by @noisersup in #4378
- Add Kubernetes readiness probe by @noisersup in #4426
- Implement Docker healthcheck by @noisersup in #4364
- Add OpenTelemetry traces and spans by @AlekSi in #4477
- Send OpenTelemetry traces and spans to OTLP endpoint by @AlekSi in #4484
- Implement
/debug/archive
handler by @sachinpuranik in #3895 - Provide systemd unit file in
.deb
and.rpm
packages by @noisersup in #4478
Enhancements π
Documentation π
- Document Kubernetes probes by @AlekSi in #4424
- Refactor and document
/debug/archive
handler by @AlekSi in #4485 - Document logging by @AlekSi in #4436
- Add release blog post for FerretDB v.1.22.0 by @Fashander in #4401
- Add blog post on running FerretDB and CloudNativePG on Kubernetes by @Fashander in #4377
- Add blogpost on "monitoring FerretDB performance using Coroot" by @Fashander in #4279
- Crush
.png
images by @AlekSi in #4441 - Remove broken links by @AlekSi in #4433
Other Changes π€
- Replace deprecated syntax in Dockerfiles by @AlekSi in #4397
- Update comments about interfaces by @AlekSi in #4405
- Check database name for authentication by @chilagrow in #4402
- Refactor runnables by @AlekSi in #4404
- Add tests for
ctxutil.Sigterm
by @AlekSi in #4406 - Setup OpenTelemetry exporter for FerretDB by @rumyantseva in #4380
- Extract
types
andzap
code into separate files by @AlekSi in #4408 - Bump Go and deps by @AlekSi in #4416
- Implement Kubernetes startup probe by @noisersup in #4399
- Disable OTEL in tests where collection name might have non-UTF-8 symbols by @rumyantseva in #4423
- Stop Otel exporter gracefully in
envtool
by @AlekSi in #4425 - Include
OpReply
error handling by @chilagrow in #4420 - Test
authSource
by @chilagrow in #4407 - Return
connectionStatus
commanddb
field by @chilagrow in #4419 - Implement checkswitch to handle regular switches by @PaveenV in #4381
- Cleanup
checkswitch
handling by @chilagrow in #4434 - Bump deps by @AlekSi in #4446
- Ignore
$readPreferences
forinsert
by @AlekSi in #4440 - Readiness probe cleanup by @noisersup in #4447
- Update linters configuration by @AlekSi in #4451
- Add support for named
slog
loggers by @chilagrow in #4435 - Increase setup timeout in tests by @AlekSi in #4454
- Port pgx logger by @AlekSi in #4450
- Handle
authSource
in low level driver by @chilagrow in #4449 - Use single definition of order for
checkswitch
by @chilagrow in #4452 - Clarify the meaning of the passed context by @AlekSi in #4455
- Remove
FuncCall
by @AlekSi in #4476 - Use
slog
inclientconn
package by @chilagrow in #4457 - Use
slog
inpostgresql
backend by @chilagrow in #4466 - Use
slog
insqlite
backend by @chilagrow in #4467 - Use
slog
inmysql
andhana
backends by @chilagrow in #4463 - Use
slog
inoplog
andcursor
packages by @chilagrow in #4471 - Use
slog
inotel
by @chilagrow in #4474 - Use
slog
indebug
package by @chilagrow in #4473 - Use
slog
in integration tests by @chilagrow in #4481 - Use
slog
inmain.go
and embeddedferretdb
package by @chilagrow in #4462 - Use
slog
infsql
by @chilagrow in #4464 - Use
slog
in handler by @chilagrow in #4470 - Use
slog
in envtool by @chilagrow in #4480 - Implement
slog.LogValuer
interface fortypes
package by @chilagrow in #4479 - Drop old dependency by @AlekSi in #4486
- Cleanup logging by @chilagrow in #4489