Releases: roadrunner-server/roadrunner
v2.12.1
tags: roadrunner
v2.12.1
🚀 v2.12.1 🚀
👀 New:
- ✏ RR: Automatically set the
GOMAXPROCS
to match the container CPU quota. - ✏ AMQP plugin: implement
Status
to check the AMQP connection PR. - ✏ SQS plugin:
prefetch
option now works as expected. RR will not consume new JOBS when it reaches theprefetch
limit, until already accepted messages are not ACK/NACK-ed. - ✏ JOBS(memory) plugin:
prefetch
option now works as expected (see SQS). You can now emulate FIFO in memory by setting theprefetch
option to 1.
🩹 Fixes:
- 🐛 gRPC plugin: server options are applied only when TLS is set. Discussion.
- 🐛 AMQP plugin: fix a few typos in the configuration.
Thanks to our awesome contributors: @wolfy-j , @butschster , @roxblnfk , @kastahov , @msmakouz, @lyt8384 ❤️
v2.12.0
tags: roadrunner
v2.12.0
🚀 v2.12.0 🚀
⚠️ websocket
and broadcast
plugins were replaced by the new centrifuge
plugin. How to build RR with these deprecated plugins ->
link
⚠️ All plugins, sdk
and api
, updated to v3
. There are no breaking changes; we moved all Go code from the api
to sdk
.
👀 New:
RPC PLUGIN
SERVICES PLUGIN
-
✏ New API to get the correct number of the running services, including statistics about the processes ->
server.Statuses
. -
✏ New option to show the service name in the logs:
# Show the name of the service in logs (e.g. service.some_service_1) # # Default: false service_name_in_log: false
Birddog: link
METRICS PLUGIN
- ✏ New API unregister previously added collector ->
metrics.Unregister
.
AMQP PLUGIN
- ✏ New configuration options:
jobs:
pipelines:
example:
driver: amqp
config:
# Durable exchange
#
# Default: true
exchange_durable: true
# Auto-deleted exchange
#
# Default: false
exchange_auto_deleted: false
# Auto-deleted queue
#
# Default: false
queue_auto_deleted: false
GO-SDK
- ✏ New option to control the
reset_timeout
:
pool:
allocate_timeout: 10s
reset_timeout: 10s
destroy_timeout: 10s
CENTRIFUGO PLUGIN
- ✏ New
centrifugo
plugin.
Docs: PHP-lib
RoadRunner config:
version: "2.7"
centrifuge:
# Centrifugo server proxy address (docs: https://centrifugal.dev/docs/server/proxy#grpc-proxy)
#
# Optional, default: tcp://127.0.0.1:30000
proxy_address: "tcp://127.0.0.1:30000"
# gRPC server API address (docs: https://centrifugal.dev/docs/server/server_api#grpc-api)
#
# Optional, default: tcp://127.0.0.1:30000. Centrifugo: `grpc_api` should be set to true and `grpc_port` should be the same as in the RR's config.
grpc_api_address: tcp://127.0.0.1:30000
# Use gRPC gzip compressor
#
# Optional, default: false
use_compressor: true
# Your application version
#
# Optional, default: v1.0.0
version: "v1.0.0"
# Your application name
#
# Optional, default: roadrunner
name: "roadrunner"
# TLS configuration
#
# Optional, default: null
tls:
# TLS key
#
# Required
key: /path/to/key.pem
# TLS certificate
#
# Required
cert: /path/to/cert.pem
# Workers pool settings. link: /~https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml#L812
#
# Optional, default: null (see default values)
pool: {}
APP-LOGGER PLUGIN
- ✏ Application logger plugin.
Docs: PHP-lib
🩹 Fixes:
- 🐛 Headers middleware: Header size is too small
- 🐛 gRPC plugin: Protobuf compiler plugin segfaults on import statements
- 🐛 Service plugin: Get services list via RPC
- 🐛 gRPC plugin: Remote
protoc-gen-php-grpc
plugin error - 🐛 HTTP plugin: Fail to upload files when RR's permissions are different from worker's
Thanks to our awesome contributors: @wolfy-j, @andrey-tech, @butschster, @masterjus, @phroggyy, @rapita, @egonbraun, @tungfinblox ❤️
v2.12.0-rc.1
👀 New:
- ✏ All plugins: update to
v3
. This is done not because of some breaking change but because of the internal update. - ✏ RPC plugin: add new API to provide a running RR version and configuration in JSON format.
- ✏ AMQP plugin: new configuration options. FR, (thanks @andrey-tech)
jobs:
pipelines:
example:
driver: amqp
config:
# Durable exchange
#
# Default: true
exchange_durable: true
# Auto-deleted exchange
#
# Default: false
exchange_auto_deleted: false
# Auto-deleted queue
#
# Default: false
queue_auto_deleted: false
- ✏ Workers pool (SDK): New option to control the
reset_timeout
. Note that thepool.Reset
is protected by mutexes, meaning that if you have some requests already in the pool, you'll have to wait for these requests to be processed. Thereset_timeout
does not count this time.
pool:
allocate_timeout: 10s
reset_timeout: 10s
destroy_timeout: 10s
v2.12.0-beta.1
⚠️ websocket
and broadcast
plugins were replaced by the new centrifuge
plugin.
⚠️ All plugins, sdk
and api
updated to v3
. There are no breaking changes except we moved all Go code from the api
to sdk
.
👀 New:
- ✏ Centrifugo plugin: New
centrifugo
plugin. This will replace existingbroadcast
+websockets
plugins. FR.
Docs: PHP-lib
RoadRunner config:
version: "2.7"
centrifuge:
# Centrifugo server proxy address (docs: https://centrifugal.dev/docs/server/proxy#grpc-proxy)
#
# Optional, default: tcp://127.0.0.1:30000
proxy_address: "tcp://127.0.0.1:30000"
# gRPC server API address (docs: https://centrifugal.dev/docs/server/server_api#grpc-api)
#
# Optional, default: 127.0.0.1:30000. Centrifugo: `grpc_api` should be set to true and `grpc_port` should be the same as in the RR's config.
grpc_api_address: 127.0.0.1:30000
# Use gRPC gzip compressor
#
# Optional, default: false
use_compressor: true
# Your application version
#
# Optional, default: v1.0.0
version: "v1.0.0"
# Your application name
#
# Optional, default: roadrunner
name: "roadrunner"
# TLS configuration
#
# Optional, default: null
tls:
# TLS key
#
# Required
key: /path/to/key.pem
# TLS certificate
#
# Required
cert: /path/to/cert.pem
# Workers pool settings. link: /~https://github.com/roadrunner-server/roadrunner/blob/master/.rr.yaml#L812
#
# Optional, default: null (see default values)
pool: {}
🩹 Fixes:
- 🐛 Headers middleware: Header size is too small, BUG (thanks @masterjus)
- 🐛 gRPC plugin: Protobuf compiler plugin segfaults on import statements, BUG (thanks @phroggyy)
- 🐛 Service plugin: Get services list via RPC, BUG (thanks @butschster)
- 🐛 gRPC plugin: Remote
protoc-gen-php-grpc
plugin error, BUG (thanks @rapita) - 🐛 HTTP plugin: Fail to upload files when RR's permissions are different from worker's, BUG (thanks @egonbraun)
v2.12.0-alpha.1
👀 New:
- ✏ API v3: remove ALL Go code from the API repository. Now, API contains only the RR protobuf API. You don't need to import an interface from the API (it's not a Go way) now. You may declare the interface where you use it (have a look at this PR for more info).
- ✏ SDK v3: refactor all packages, merge
worker
+sync worker
(since there were no differences),pool
+sync pool
- now, if a user uses supervisor, pool automatically turns on supervisor under the hood.
🩹 Fixes:
- 🐛 http plugin: correctly set permissions for the uploads (
multipart-form
files), BUG, (thanks @egonbraun)
🔧 Maintenance:
- 🔧 All plugins update to the
v3
. They don't use API interfaces anymore.
v2.11.4
👀 New:
🔧 Maintenance:
roadrunner-temporal
plugin updated to:1.7.0
http
plugin updated to:2.23.5
sqs
plugin updated to:2.20.4
config
plugin updated to:2.16.5
grpc
plugin updated to:2.23.3
nats
plugin updated to:2.17.3
jobs
plugin updated to:2.18.4
server
plugin updated to:2.16.4
tcp
plugin updated to:2.15.4
websockets
plugin updated to:2.16.5
otel
plugin updated to:2.5.6
kafka
plugin updated to:2.2.3
v2.11.3
👀 New:
- ✏ [ALPHA] gRPC plugin:
buf
remote plugins support for theprotoc-gen-php-grpc
plugin. FR, (thanks @rauanmayemir) - ✏ Temporal plugin:
mTLS
support. FR, (thanks @seregazhuk)
temporal:
address: 127.0.0.1:7233
cache_size: 100000
activities:
num_workers: 4
tls:
key: client.key
cert: client.pem
root_ca: ca.cert
client_auth_type: require_and_verify_client_cert
server_name: "tls-sample"
🩹 Fixes:
- 🐛 Config plugin: properly replace environment variables for the array
yaml
values. BUG, (thanks @lyt8384)
🧹 Chore:
- 🧑🏭: [ALPHA] gRPC plugin:
base64
decoder for the google'sErrorProto
structure. FR, (thanks @rauanmayemir)
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