Skip to content

Releases: roadrunner-server/roadrunner

v2.11.2

15 Sep 08:47
28b14c2
Compare
Choose a tag to compare

👀 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 a driver:

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

25 Aug 13:25
ff29b8b
Compare
Choose a tag to compare

👀 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 and client-version in Go client to represent PHP-SDK, FR, (thanks, @wolfy-j)

🧹 Chore:

  • 🧑‍🏭: Autocomplete .rr.yaml configuration for the cache plugin. link

v2.11.0

18 Aug 13:52
6a57268
Compare
Choose a tag to compare

⚠️ 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 a Status structure in the Metadata (key - error) to be parsed and returned to the user w/o worker restart. NOTE: Status structure should be marshaled via proto marshaller, not json. 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 the worker 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 the tcp/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 of relay_timeout.

🧹 Chore:

  • 🧽 Logger plugin: use the parsable timestamp format for the raw logger mode. CH, (thanks @ilsenem)

🔧 Maintenance:

  • Temporal GO-SDK and API updated to the latest versions.
  • All plugins, including RR, now use Go 1.19

v2.10.7

14 Jul 09:02
18a7a98
Compare
Choose a tag to compare

👀 New:

  • ✏️ OTEL Middleware: Support for the jaeger_agent exporter - FR, (thanks @L3tum)

📦 Packages:

  • 📦 OTEL SDK updated to v1.8.0
  • 📦 google.golang.org/grpc updated to v1.48.0
  • 📦 logger plugin updated to v2.13.5
  • 📦 Go updated to v1.18.4

v2.10.6

07 Jul 10:59
4e79622
Compare
Choose a tag to compare

🩹 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 GitLab tokens in the velox.toml.
  • ✏️ Logger: Say bye-bye to the CRC verification failed error. Starting from the v2.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

23 Jun 21:10
3996ba6
Compare
Choose a tag to compare

🩹 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

10 Jun 23:29
eb6f264
Compare
Choose a tag to compare

🩹 Fixes:

  • 🐛 Fix: incorrect reset behavior for the workers' pool.
  • 🐛 Fix: correct reset order for the RR and Temporal workers.

v2.10.3

02 Jun 10:50
8cb55cc
Compare
Choose a tag to compare

👀 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 the serve command: rr serve -p. Docs: link, FR (thanks @Baiquette)

🩹 Fixes:

  • 🐛 Fix: incorrect reset behavior for the temporal plugin. BUG, BUG, BUG. (thanks @dmitry-pilipenko, @mzavatsky)

v2.10.2

26 May 12:10
0e1ec33
Compare
Choose a tag to compare

👀 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 to h2c: rfc7540
    Headers, which should be sent to upgrade connection:

    1. Upgrade: h2c
    2. Connection: HTTP2-Settings
    3. Connection: Upgrade
    4. HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA RFC
  • ✏️ VELOX: Add GitLab support. Starting from the beta.2 you may use GitHub and GitLab plugins together. Configuration updated. Keep in mind, that until the stable release 1.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

19 May 10:33
aab5755
Compare
Choose a tag to compare

👀 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, use consume_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 the client_auth_type are the same as for the gRPC (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

🩹 Fixes:

  • 🐛 Fix: HTTP plugin: non-documented behavior on non-standard (but valid) http codes. BUG, (thanks, @Meroje)
  • 🐛 Fix: SQS driver: rr_auto_ack attribute won't fail the existing messages.