Skip to content

Releases: roadrunner-server/roadrunner

v2023.3.2

19 Oct 16:29
093f7c8
Compare
Choose a tag to compare

🚀 v2023.3.2 [Maintenance] 🚀

🩹 Fixes

🧹 Chore:

  • 🧑‍🏭 Dependencies: update project dependencies (including CVE in transitive dependencies, especially gofiber).

v2023.3.1

12 Oct 16:17
99cbb89
Compare
Choose a tag to compare

🚀 v2023.3.1 [Maintenance release] 🚀

🧹 Chore:

  • 🧑‍🏭 Dependencies: update project dependencies (including CVE in Go libraries).
  • 🧑‍🏭 Go: Update Golang to version 1.21.3.
  • 🧑‍🏭 Docs: Missed documentation about Dynamic Workers Scaling: link

v2023.3.0

05 Oct 23:30
90544d7
Compare
Choose a tag to compare

Description of Changes

🚀 v2023.3.0 🚀

🔥 Features:

RR Core:

👀 JOBS plugin:

  • ✒️ AMQP Driver: Support for a custom routing_key in the JOBS payload: FR, (thanks @rauanmayemir)
  • ✒️ JOBS plugin: Parallel pipelines start/stop/destroy initialization. If you have much number of the pipelines,
    this feature should significantly reduce RR startup/shutdown time: FR, (thanks @Kaspiman)

👀 KV drivers (all):

  • ✒️ Support for OTEL across all KV drivers: FR

👀 App-Logger plugin:

  • ✒️ Added new methods for your logger to log with context (message + key-values array): FR, (thanks @Baiquette)

👀 Temporal plugin:

  • ✒️ Replay API support [SINCE PHP-SDK 2.6.0]: FR
  • ✒️ Add support for the Worker Versioning: FR

👀 Service plugin:

  • ✒️ Support for the user/group per-service: FR, (thanks @Kaspiman)

Configuration example:

service:
    schedule:run:
        command: "bin/console schedule:run"
        process_num: 1
        exec_timeout: 0s
        remain_after_exit: true
        service_name_in_log: false
        restart_sec: 60
        user: www-data  # <---------- [NEW]
        group: www-data # <---------- [NEW]

👀 HTTP plugin:

  • ✒️ Response streaming support FR, (thanks @roxblnfk)

Worker example:

<?php

require __DIR__ . '/vendor/autoload.php';

use Spiral\RoadRunner;

ini_set('display_errors', 'stderr');
require __DIR__ . "/vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$http = new RoadRunner\Http\HttpWorker($worker);
$read = static function (): Generator {
    foreach (\file(__DIR__ . '/test.txt') as $line) {
        try {
            yield $line;
        } catch (Spiral\RoadRunner\Http\Exception\StreamStoppedException) {
            // Just stop sending data
            return;
        }
    }
};

try {
    while ($req = $http->waitRequest()) {
        $http->respond(200, $read());
    }
} catch (\Throwable $e) {
    $worker->error($e->getMessage());
}
  • ✒️ Support for the 103 Early Hints via streamed response: FR, (thanks @azjezz)

Worker example:

<?php

use Spiral\RoadRunner;

ini_set('display_errors', 'stderr');
require __DIR__ . "/vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$http = new RoadRunner\Http\HttpWorker($worker);
$read = static function (): Generator {
    $limit = 10;
    foreach (\file(__DIR__ . '/test.txt') as $line) {
        foreach (explode('"', $line) as $chunk) {
            try {
                usleep(50_000);
                yield $chunk;
            } catch (Spiral\RoadRunner\Http\Exception\StreamStoppedException $e) {
                // Just stop sending data
                return;
            }
            if (--$limit === 0) {
                return;
            }
        }
    }
};


try {
    while ($req = $http->waitRequest()) {
        $http->respond(103, '', headers: ['Link' => ['</style111.css>; rel=preload; as=style'], 'X-103' => ['103']], endOfStream: false);
        $http->respond(200, $read(), headers: ['X-200' => ['200']], endOfStream: true); // your regular response
    }
} catch (\Throwable $e) {
    $worker->error($e->getMessage());
}

👀 Server plugin:

  • ✒️ RAW command support: Support for raw commands, which are not validated by RR and may contain spaces. Note that this feature is only supported via .rr.yaml configuration: FR, (thanks @nunomaduro)
    First argument should be a command (executable) and the rest of the arguments are passed to the command as arguments.
version: "3"

server:
  command: ["php", "../../php_test_files/client.php echo pipes"]
  relay: "pipes"
  relay_timeout: "20s"
version: "3"

server:
    command:
      - "php"
      - "../../php_test_files/client.php echo pipes"
    relay: "pipes"
    relay_timeout: "20s"

🩹 Fixes:

  • 🐛 RR Core: Actualize, according to the docs ./rr jobs list/stop/resume commands: PR, (thanks @gam6itko).
  • 🐛 JOBS plugin: Correctly handle OTEL span on listener error: PR, (thanks @Kaspiman).
  • 🐛 RR tests: Fix tests failures on Darwin: PR, (thanks @shyim).
  • 🐛 Streaming: Add stream timeout (will be configurable in the next release). Fix loss of the first chunk of the streamed response.

🧹 Chore:

  • 🧑‍🏭 Golang: Update Golang version to v1.21.
  • 🧑‍🏭 Dependencies: update project dependencies.

v2023.3.0-rc.1

14 Sep 17:17
4cd88bb
Compare
Choose a tag to compare
v2023.3.0-rc.1 Pre-release
Pre-release

🚀 v2023.3.0-rc.1 🚀

🔥 Features:

👀 AMQP driver:

👀 KV drivers (all):

  • ✒️ Support for OTEL across all KV drivers: FR

👀 App-Logger plugin:

  • ✒️ Added new methods for your logger to log with context (message + key-values array): FR, (thanks @Baiquette)

v2023.3.0-beta.2

31 Aug 20:52
2041c0d
Compare
Choose a tag to compare
v2023.3.0-beta.2 Pre-release
Pre-release

🚀 v2023.3.0-beta.2 🚀

🔥Features:

👀 Temporal plugin:

  • ✒️ Add support for the Worker Versioning: FR

🩹 Fixes:

  • 🐛 Streaming: Add stream timeout (will be configurable in the next release). Fix loss of the first chunk of the streamed response.

v2023.3.0-beta.1

18 Aug 17:40
9f15de1
Compare
Choose a tag to compare
v2023.3.0-beta.1 Pre-release
Pre-release

🚀 v2023.3.0-beta.1 🚀

👀 New

  • ✒️ Service plugin: Support for the user/group per-service: FR, (thanks @Kaspiman)

Configuration example:

service:
    schedule:run:
        command: "bin/console schedule:run"
        process_num: 1
        exec_timeout: 0s
        remain_after_exit: true
        service_name_in_log: false
        restart_sec: 60
        user: www-data  # <---------- [NEW]
        group: www-data # <---------- [NEW]
  • ✒️ Temporal plugin: Replay API support [SINCE PHP-SDK 2.6.0]: FR
  • ✒️ RR core: sdnotify support: FR, (thanks @Kaspiman)
  • ✒️ HTTP response streaming support: : FR, (thanks @roxblnfk)

Worker.php example:

<?php

require __DIR__ . '/vendor/autoload.php';

use Spiral\RoadRunner;

ini_set('display_errors', 'stderr');
require __DIR__ . "/vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$http = new RoadRunner\Http\HttpWorker($worker);
$read = static function (): Generator {
    foreach (\file(__DIR__ . '/test.txt') as $line) {
        try {
            yield $line;
        } catch (Spiral\RoadRunner\Http\Exception\StreamStoppedException) {
            // Just stop sending data
            return;
        }
    }
};

try {
    while ($req = $http->waitRequest()) {
        $http->respond(200, $read());
    }
} catch (\Throwable $e) {
    $worker->error($e->getMessage());
}
  • ✒️ HTTP plugin: Support for the 103 Early Hints via streamed response: FR, (thanks @roxblnfk)
  • ✒️ RAW command support: Support for raw commands, which are not validated by RR and may contain spaces. Note that this feature is only supported via .rr.yaml configuration: FR, (thanks @nunomaduro)

Configuration:

version: "3"

server:
  command: ["php", "../../php_test_files/client.php echo pipes"]
  relay: "pipes"
  relay_timeout: "20s"
version: "3"

server:
    command:
      - "php"
      - "../../php_test_files/client.php echo pipes"
    relay: "pipes"
    relay_timeout: "20s"

First argument should be a command (executable) and the rest of the arguments are passed to the command as arguments.

  • ✒️ JOBS plugin: Parallel pipelines start/stop/destroy initialization. If you have a much number of the pipelines, this feature should significantly reduce RR startup/shutdown time: FR, (thanks @Kaspiman)

🩹 Fixes

  • 🐛 RR Core: Actualize according to the docs ./rr jobs list/stop/resume commands: PR, (thanks @gam6itko).
  • 🐛 JOBS plugin: Correctly handle OTEL span on listener error: PR, (thanks @Kaspiman).
  • 🐛 RR tests: Fix tests failures on Darwin: PR, (thanks @shyim).

🧹 Chore:

  • 🧑‍🏭 Golang: Update Golang version to v1.21.
  • 🧑‍🏭 Dependencies: update project dependencies.

Special thanks for this beta-release to our awesome PHP team: @butschster, @roxblnfk, @wolfy-j and @msmakouz ❤️

v2023.2.2

10 Aug 16:38
ed31539
Compare
Choose a tag to compare

🚀 v2023.2.2 🚀

🩹 Fixes

  • 🐛 JOBS plugin: Fix typo in the RPC span name: PR, (thanks @Kaspiman).
  • 🐛 SDK: Fix incorrect workers state when worker reached idleTTL state: BUG, (thanks @Aleksa1996).

🧹 Chore:

  • 🧑‍🏭 HTTP plugin: faster PostForm/MultipartForm processing PR.
  • 🧑‍🏭 Golang: Update Golang version to v1.21.
  • 🧑‍🏭 Dependencies: update project dependencies.

v2023.2.1

27 Jul 17:00
923fec7
Compare
Choose a tag to compare

Description of Changes

🚀 v2023.2.1 🚀

🩹 Fixes

  • 🐛 NATS driver: Segfault when sending job via third-party sender without consume_all option set to true: BUG, (thanks @KernelMrex).
  • 🐛 Metrics plugin: Irregular panic when declaring metrics via on_init option: BUG, (thanks @Kaspiman).
  • 🐛 Headers middleware: Inconsistent usage of CORS options, failed to apply allowed_* options with spaces: BUG, (thanks @gam6itko).

🧹 Chore:

  • 🧑‍🏭 Dependencies: update project dependencies.

v2023.2.0

06 Jul 19:01
f90d1f0
Compare
Choose a tag to compare

🚀 v2023.2.0 🚀

👀 New

  • ✒️ Kafka driver: Support for the SCRAM-SHA-256 and SCRAM-SHA-512 SASL mechanisms: FR, (thanks @Azomas)
  • ✒️ Headers middleware: Actualize CORS support: FR, (thanks @rmikalkenas, @hustlahusky)
  • ✒️ RoadRunner CLI: Additional semgrep security scanner.
  • ✒️ Docker builds: New tags: v2023, v2023.x and with bugfix: v2023.x.x. The latest tag points to the latest stable release. All rc, beta, alpha releases will no longer be tagged with latest.
  • ✒️ Server plugin: after_init option. This is a new server option and, like on_init, can contain any custom command to be fired after each pool of workers is initialized. For example, if you have 2 plugins: http and grpc, the after_init command would be fired twice: FR, (thanks @rauanmayemir).
  • ✒️ AMQP driver: Support for the TLS transport named amqps: FR, (thanks @marcosraudkett)
  • ✒️ JOBS plugin: Support for the workers health/readiness checks. PR, (thanks @Kaspiman)
  • ✒️ JOBS plugin: Delete all messages that were in the priority queue when the pipeline was deleted (1-st part of the BUG), BUG
  • ✒️ JOBS plugin: JOBS plugin now support reporting it's workers status with a simple query: http://<status_plugin_host>:<port>/ready(health)?plugin=jobs, PR, (thanks @Kaspiman)
  • ✒️ Temporal plugin, internal: Pass history_len to the PHP worker and get the PHP-SDK version to pass to the Temporal server.
  • ✒️ Lock plugin: Completely rewritten. Now supports microseconds interval. Any ttl/wait_ttl value passed to RR is now treated as microseconds. There is no configuration for this plugin, it is bundled with RR.
  • ✒️ Service plugin: Add a new option for the graceful process timeout: timeout_stop_sec. RR will wait for the specified amount of time (but not more than endure.graceful_period) for the process to stop, FR, (thanks @asanikovich)

🩹 Fixes

  • 🐛 JOBS plugin: Nil pointer exception on very fast (after RR was started, but JOBS worker failed to start) check for the JOBS metrics: BUG, (thanks @Kaspiman).
  • 🐛 Service plugin: Incorrect parsing and assignment of the process_num value passed via RPC: BUG, (thanks @asanikovich)

🧹 Chore:

  • 🧑‍🏭 Dependencies: update project dependencies.

v2023.2.0-beta.3

22 Jun 20:09
f156c45
Compare
Choose a tag to compare
v2023.2.0-beta.3 Pre-release
Pre-release
  • Fix Docker tags