Releases: roadrunner-server/roadrunner
v2.11.2
👀 New:
-
✏ Kafka plugin: [
⚠️ EXPERIMENTAL OPTION⚠️ ] Kafka plugin now waits for 1 minute (automatically) for the broker to be available, FR, (thanks @Baiquette) -
✏ Internal: PHP Worker now uses an FSM to transition between states (
working
,ready
,invalid
, etc). -
✏ Internal:
./rr reset
now works in parallel. All workers will be restarted simultaneously instead of a one-by-one sync approach. -
✏ Internal:
./rr reset
and destroy (when stopping RR) now gracefully stop the workers (giving a chance for the finalizers to work). If the worker doesn't respond in 10 seconds, it'll be killed.
🩹 Fixes:
- 🐛 SQS plugin: Incorrect detection of the
AWS IMDSv2
instances, BUG (thanks @paulermo) - 🐛 Temporal plugin: Segmentation violation when using TLS, BUG, (thanks @seregazhuk)
- 🐛 NATS plugin: Properly check the
stream not found
error from NATS, BUG, (thanks @pjtuxe)
🧹 Chore:
- 🧑🏭: Temporal plugin: Support for the
statsd
daemon for stats aggregation, FR, (thanks @cv65kr)
Configuration stays the same (no breaking changes), but additionally, you may specify adriver
:
Prometheus:
temporal:
address: "127.0.0.1:7233"
metrics:
driver: prometheus # <---- prometheus used by default (you may omit the driver in this case)
address: "127.0.0.1:9095"
prefix: "samples"
type: "summary"
activities:
num_workers: 4
Statsd:
temporal:
address: "127.0.0.1:7233"
metrics:
driver: statsd # <---- Should be specified to use a statsd driver
host_port: "127.0.0.1:8125"
prefix: "samples"
flush_interval: 1s
flush_bytes: 512
tags:
- foo: bar
activities:
num_workers: 4
Detailed description is here: link
v2.11.1
👀 New:
- ✏ http plugin: Send raw body (unescaped) to the PHP worker for the
application/x-www-form-urlencoded
content type. FR1, FR2, (thanks @ekisu, @rlantingmove4mobile)
Configuration:
http:
raw_body: true/false (by default)
- ✏ temporal plugin: Overwrite
client-name
andclient-version
in Go client to represent PHP-SDK, FR, (thanks, @wolfy-j)
🧹 Chore:
- 🧑🏭: Autocomplete
.rr.yaml
configuration for thecache
plugin. link
v2.11.0
⚠️ NewRelic middleware was removed. Please, use OTEL middleware instead
⚠️ In 2.12.0
we plan to replace websockets
and broadcast
plugins with the centrifuge
plugin. However, if you still need a RR with these deprecated plugins, you may use Velox
to build your custom build.
👀 New:
- ✏️ [BETA]: RoadRunner: Can now be embedded in other go programs. PR, (thanks @khepin)
- ✏️ gRPC Plugin: Implement Google's
gRPC
errors API. The exception might be passed as aStatus
structure in theMetadata
(key -error
) to be parsed and returned to the user w/o worker restart. NOTE:Status
structure should be marshaled viaproto
marshaller, notjson
. FR - ✏️ Logger Plugin: Get rid of the
context deadline exceeded
error on worker's allocation. We updated the error message with the link to the docs with the most common causes for theworker allocation failed
error: https://roadrunner.dev/docs/known-issues-allocate-timeout/2.x/en. Feel free to add your cases here :) - ✏️ CLI: New CLI command to pause, resume, destroy and list Jobs. FR, (thanks @hustlahusky)
- ✏️ Velox: New configuration option:
folder
, which can be used to specify the folder with the plugin in the repository. (thanks, @darkweak) - ✏️ Velox: Velox now respects the plugin's
replace
directives. (thanks, @darkweak) - ✏️ Cache plugin: RR now uses a great cache (RFC 7234) plugin made by @darkweak
- ✏️ [BETA] Kafka plugin: New Kafka driver for the Jobs plugin. FR, (thanks, @Smolevich, @Baiquette)
- ✏️ Temporal plugin: Temporal now uses a new reset mechanism to prevent WF worker restarts on activity worker failure
- ✏️ Temporal plugin: Temporal plugin now supports a TSL-based authentication with the key and certificate.
Configuration:
temporal:
tls:
key: path/to/key
cert: path/to/cert
# other options
🩹 Fixes:
- 🐛 Server plugin: use the
allocate_timeout
from the pool to wait for thetcp/unix
socket connection from the PHP worker. BUG, (thanks @Warxcell) - 🐛 Velox: Fix panic when no
github
option is specified in the configuration. - 🐛 SDK: Use
pool.allocate_timeout
for the sockets/tcp relays instead of silently used ofrelay_timeout
.
🧹 Chore:
🔧 Maintenance:
- Temporal
GO-SDK
andAPI
updated to the latest versions. - All plugins, including RR, now use Go 1.19
v2.10.7
v2.10.6
🩹 Fixes:
- 🐛 SDK: In some cases, worker watcher might freeze if the user kills the worker right after allocation but before
wait4
syscall and become a zombie. BUG - 🐛 AMQP Plugin: Ignored prefetch option when dynamically creating a pipeline. BUG (thanks @rauanmayemir)
👀 New:
- ✏️ VELOX: Velox now supports environment variables for the
version
,buildtime
, GitHub, and GitLabtokens
in thevelox.toml
. - ✏️ Logger: Say bye-bye to the
CRC verification failed
error. Starting from thev2.10.6
, RR will show user-friendly message with the link to our docs on the most common causes for this type of error. Docs
v2.10.5
🩹 Fixes:
- 🐛 SDK: Increase
stderr
buffer size from 32kb to 64kb, man7-pipe_capacity, BUG, (thanks @7krasov) - 🐛 AMQP Plugin: Fix incorrect queue binding to the
default
routing key. BUG, (thanks @rauanmayemir) - 🐛 HTTP Plugin: Fix
x-www-form-urlencoded
requests 10Mb limit. BUG (thanks @StreetYo)
v2.10.4
v2.10.3
👀 New:
- ✏️ CLI:
rr stop
command.rr stop
will read the.pid
file to send a graceful-stop signal to the primary RR process (SIGTERM
). To create a.pid
file, add-p
to theserve
command:rr serve -p
. Docs: link, FR (thanks @Baiquette)
🩹 Fixes:
- 🐛 Fix: incorrect
reset
behavior for thetemporal
plugin. BUG, BUG, BUG. (thanks @dmitry-pilipenko, @mzavatsky)
v2.10.2
👀 New:
-
✏️ WORKER: Starting from this release, RR is able to show full error messages sent to the
STDOUT
during the worker bootstrap. FR (thanks @ykweb) -
✏️ HTTP: Connection might be upgraded from the
http/1.1
toh2c
: rfc7540
Headers, which should be sent to upgrade connection:Upgrade
:h2c
Connection
:HTTP2-Settings
Connection
:Upgrade
HTTP2-Settings
:AAMAAABkAARAAAAAAAIAAAAA
RFC
-
✏️ VELOX: Add GitLab support. Starting from the
beta.2
you may useGitHub
andGitLab
plugins together. Configuration updated. Keep in mind, that until the stable release1.0.0
configuration might be changed with breaking changes. -
✏️ protoc-gen-php-grpc: Use of fully qualified names in place of imports. PR (thanks @ryanjcohen)
v2.10.1
👀 New:
- ✏️ Jobs (queues) plugin now can consume any payload from the queue. If RR fails in converting payload into the
Job
structure, it'll create and fill all available fields manually. To turn on this feature, useconsume_all: true
in the driver configuration, e.g.:
Supported drivers:amqp
,sqs
,beanstalk
,nats
.
jobs:
num_pollers: 10
pipeline_size: 100000
pool:
num_workers: 10
pipelines:
test-raw:
driver: sqs
config:
consume_all: true # <------- NEW OPTION
consume: [ "test-raw" ]
- ✏️ SQS Jobs driver now can skip queue declaration in favor of getting queue URL instead. To use this feature, use
skip_queue_declaration: true
sqs driver option. FR, (thanks @sergey-telpuk)
jobs:
num_pollers: 10
pipeline_size: 100000
pool:
num_workers: 10
pipelines:
test-2:
driver: sqs
config:
skip_queue_declaration: true # <----- NEW OPTION
consume: [ "test-2" ]
- ✏️ OpenTelemetry middleware now supports
Jaeger
exporter and propagator.
http:
address: 127.0.0.1:43239
max_request_size: 1024
middleware: [gzip, otel]
pool:
num_workers: 2
max_jobs: 0
allocate_timeout: 60s
destroy_timeout: 60s
otel:
exporter: jaeger # <----- NEW OPTION
- ✏️ HTTP Plugin now supports
mTLS
authentication. Possible values for theclient_auth_type
are the same as for thegRPC
(no_client_cert
,request_client_cert
,require_any_client_cert
,verify_client_cert_if_given
,require_and_verify_client_cert
) FR, (thanks @fwolfsjaeger)
version: '2.7'
server:
command: "php ../../php_test_files/http/client.php echo pipes"
relay: "pipes"
relay_timeout: "20s"
http:
address: :8085
max_request_size: 1024
middleware: [ ]
pool:
num_workers: 1
max_jobs: 0
allocate_timeout: 60s
destroy_timeout: 60s
ssl:
address: :8895
key: "key"
cert: "cert"
root_ca: "rootCA.pem" # <---- REQUIRED to use mTLS
client_auth_type: require_and_verify_client_cert # <---- NEW OPTION
logs:
mode: development
level: error