- 🔨 Pool, worker interfaces: payload now passed and returned by the pointer.
- ✏️ Long-awaited, reworked
Jobs
plugin with pluggable drivers. Now you can allocate/destroy pipelines in the runtime. Drivers included in the initial release:RabbitMQ (0-9-1)
,SQS v2
,beanstalk
,ephemeral
. PR - ✏️ Support for the IPv6 (
tcp|http(s)|empty [::]:port
,tcp|http(s)|empty [::1]:port
,tcp|http(s)|empty :// [0:0:0:0:0:0:0:1]:port
) for RPC, HTTP and other plugins. RFC - ✏️ Supoort for the Docker images via GitHub packages.
- ✏️ Go 1.17 support.
- 🐛 Fix: add
debug
pool config key to the.rr.yaml
configuration reference. - 🐛 Fix: fixed bug with goroutines waiting on the internal worker's container channel.
- 📦 Update goridge to
v3.2.1
- 📦 Update temporal to
v1.0.9
- 📦 Update RR to
v2.4.0
- 🐛 Fix: Do not call the container's Stop method after the container stopped by an error.
- 🐛 Fix: Bug with ttl incorrectly handled by the worker PR
- 🐛 Fix: Add
RR_BROADCAST_PATH
to thewebsockets
plugin PR
- RR Milestone 2.3.2
- ✏️ Rework
broadcast
plugin. Add architecture diagrams to thedoc
folder. PR - ✏️ Add
Clear
method to the KV plugin RPC. PR
- 🐛 Fix: Bug with channel deadlock when
exec_ttl
was used and TTL limit reached PR - 🐛 Fix: Bug with healthcheck endpoint when workers marked as invalid and stay is that state until next request PR
- 🐛 Fix: Bugs with
boltdb
storage: Boom , Boom, Boom - 🐛 Fix: Bug with incorrect Redis initialization and usage Bug
- 🐛 Fix: Bug, Goridge duplicate error messages Bug
- 🐛 Fix: Bug, incorrect request
origin
check Bug
- 📦 Update goridge to
v3.1.4
- 📦 Update temporal to
v1.0.8
- ✏️ Brand new
broadcast
plugin now has the name -websockets
with broadcast capabilities. It can handle hundreds of thousands websocket connections very efficiently (~300k messages per second with 1k connected clients, in-memory bus on 2CPU cores and 1GB of RAM) Issue - ✏️ Protobuf binary messages for the
websockets
andkv
RPC calls under the hood. Issue - ✏️ Json-schemas for the config file v1.0 (it also registered in schemastore.org)
- ✏️
latest
docker image tag supported now (but we strongly recommend using a versioned tag (like0.2.3
) instead) - ✏️ Add new option to the
http
config section:internal_error_code
to override default (500) internal error code. Issue - ✏️ Expose HTTP plugin metrics (workers memory, requests count, requests duration) . Issue
- ✏️ Scan
server.command
and find errors related to the wrong path to aPHP
file, or.ph
,.sh
scripts. Issue - ✏️ Support file logger with log rotation Wiki , Issue
- 🐛 Fix: Bug with
informer.Workers
worked incorrectly: Bug - 🐛 Fix: Internal error messages will not be shown to the user (except HTTP status code). Error message will be in logs: Bug
- 🐛 Fix: Error message will be properly shown in the log in case of
SoftJob
error: Bug - 🐛 Fix: Wrong applied middlewares for the
fcgi
server leads to the NPE: Bug
- 📦 Update goridge to
v3.1.0
- 🐛 Fix: revert static plugin. It stays as a separate plugin on the main route (
/
) and supports all the previously announced features. - 🐛 Fix: remove
build
and other old targets from the Makefile.
-
✏️ Reworked
static
plugin. Now, it does not affect the performance of the main route and persist on the separate file server (within thehttp
plugin). Looong awaited feature:Etag
(+ weak Etags) as well with theIf-Mach
,If-None-Match
,If-Range
,Last-Modified
andIf-Modified-Since
tags supported. Static plugin has a bunch of new options such as:allow
,calculate_etag
,weak
andpattern
. -
✏️ Update
informer.List
implementation. Now it returns a list with the all available plugins in the runtime.
- 🐛 Fix: issue with wrong ordered middlewares (reverse). Now the order is correct.
- 🐛 Fix: issue when RR fails if a user sets
debug
mode with theexec_ttl
supervisor option. - 🐛 Fix: uniform log levels. Use everywhere the same levels (warn, error, debug, info, panic).
- 🐛 Fix: issue with endure provided wrong logger interface implementation.
- ✏️ Add support for
linux/arm64
platform for binaries in the RR releases. - ✏️ New
service
plugin. Docs: link
- 🐛 Fix: logger didn't provide an anonymous log instance to a plugins w/o
Named
interface implemented. - 🐛 Fix: http handler was without log listener after
rr reset
.
- ✏️ Add support for
linux/arm64
platform for docker image (thanks @tarampampam). - ✏️ Add dotenv file support (
.env
in working directory by default; file location can be changed using CLI flag--dotenv
orDOTENV_PATH
environment variable) (thanks @tarampampam). - 📜 Add a new
raw
mode for thelogger
plugin to keep the stderr log message of the worker unmodified (logger severity level should be at leastINFO
). - 🆕 Add Readiness probe check. The
status
plugin provides/ready
endpoint which return the204
HTTP code if there are no workers in theReady
state and200 OK
status if there are at least 1 worker in theReady
state. - 🆕 New option
unavailable_status_code
for thestatus
plugin.
- 🐛 Fix: bug with the temporal worker which does not follow general graceful shutdown period.
- 🐛 Fix: slow last response when reached
max_jobs
limit.
- 🐛 Fix: Bug with required Root CA certificate for the SSL, now it's optional.
- 🆕 New: HTTP/FCGI/HTTPS internal logs instead of going to the raw stdout will be displayed in the RR logger at
the
Info
log level. - ⚡ New: Builds for the Mac with the M1 processor (arm64).
- 👷 Rework ServeHTTP handler logic. Use http.Error instead of writing code directly to the response writer. Other small improvements.
- 🐛 Fix: incorrect PHP command validation
- 🐛 Fix: ldflags properly inject RR version
- ⬆️ Update: README, links to the go.pkg from v1 to v2
- 📦 Bump golang version in the Dockerfile and in the
go.mod
to 1.16 - 📦 Bump Endure container to v1.0.0.
- 📦 Bump Roadrunner-Temporal to v1.0.1 (release: ).
- ✔️ Added shared server to create PHP worker pools instead of isolated worker pool in each individual plugin.
- 🧟 New plugin system with auto-recovery, easier plugin API.
- 📜 New
logger
plugin to configure logging for each plugin individually. - 🔝 Up to 50% performance increase in HTTP workloads.
- ✔️ Added Temporal Workflow plugin to run distributed computations on scale.
- ✔️ Added
debug
flag to reload PHP worker ahead of request (emulates PHP-FPM behavior). - ❌ Eliminated
limit
service, now each worker pool incluidessupervisor
configuration. - 🆕 New resetter, informer plugins to perform hot reloads and observe loggers in a system.
- 💫 Exposed more HTTP plugin configuration options.
- 🆕 Headers, static and gzip services now located in HTTP config.
- 🆕 Ability to configure the middleware sequence.
- 💣 Faster Goridge protocol (eliminated 50% of syscalls).
- 💾 Added support for binary payloads for RPC (
msgpack
). - 🆕 Server no longer stops when a PHP worker dies (attempts to restart).
- 💾 New RR binary server downloader.
- 💣 Echoing no longer breaks execution (yay!).
- 🆕 Migration to ZapLogger instead of Logrus.
- 💥 RR can no longer stuck when studding down with broken tasks in pipeline.
- 🧪 More tests, more static analysis.
- 💥 Created a new foundation for new KV, WebSocket, GRPC and Queue plugins.
- RR-Core update to v2.0.0-RC.3 version (release: link)
- Temporal plugin update to v2.0.0-RC.2 version ( release: link)
- RR-Core update to v2.0.0-RC.2 version
- Temporal plugin update to v2.0.0-RC.1 version
- Goridge update to v3.0.1 version
- Endure container update v1.0.0-RC.1 version