Skip to content
This repository has been archived by the owner on Feb 3, 2022. It is now read-only.

feat(release): v2.5.0 release #114

Merged
merged 2 commits into from
Oct 20, 2021
Merged

feat(release): v2.5.0 release #114

merged 2 commits into from
Oct 20, 2021

Conversation

rustatian
Copy link
Contributor

@rustatian rustatian commented Oct 19, 2021

Reason for This PR

  • next release cycle

Description of Changes

💔 Breaking change:

  • 🔨 Some drivers now use a new config key to handle local configuration. Involved plugins and drivers:
  • plugins: broadcast, kv
  • drivers: memory, redis, memcached, boltdb.

Old style:

broadcast:
    default:
        driver: memory
        interval: 1

New style:

broadcast:
  default:
    driver: memory
     config: {} <--------------- NEW
kv:
  memory-rr:
    driver: memory
    config: <--------------- NEW
      interval: 1

kv:
  memcached-rr:
    driver: memcached
    config: <--------------- NEW
       addr:
         - "127.0.0.1:11211"

broadcast:
  default:
    driver: redis
    config: <------------------ NEW
      addrs:
        - "127.0.0.1:6379"

👀 New:

  • ✏️ [BETA] GRPC plugin update to v2.
  • ✏️ Roadrunner-plugins repository. This is the new home for the roadrunner plugins with documentation, configuration samples, and common problems.
  • ✏️ [BETA] Let's Encrypt support. RR now can obtain an SSL certificate/PK for your domain automatically. Here is the new configuration:
    ssl:
      # Host and port to listen on (eg.: `127.0.0.1:443`).
      #
      # Default: ":443"
      address: "127.0.0.1:443"

      # Use ACME certificates provider (Let's encrypt)
      acme:
        # Directory to use as a certificate/pk, account info storage
        #
        # Optional. Default: rr_cache
        certs_dir: rr_le_certs

        # User email
        #
        # Used to create LE account. Mandatory. Error on empty.
        email: you-email-here@email

        # Alternate port for the http challenge. Challenge traffic should be redirected to this port if overridden.
        #
        # Optional. Default: 80
        alt_http_port: 80,


        # Alternate port for the tls-alpn-01 challenge. Challenge traffic should be redirected to this port if overridden.
        #
        # Optional. Default: 443.
        alt_tlsalpn_port: 443,

        # Challenge types
        #
        # Optional. Default: http-01. Possible values: http-01, tlsalpn-01
        challenge_type: http-01

        # Use production or staging endpoints. NOTE, try to use the staging endpoint (`use_production_endpoint`: `false`) to make sure, that everything works correctly.
        #
        # Optional, but for production should be set to true. Default: false
        use_production_endpoint: true

        # List of your domains to obtain certificates
        #
        # Mandatory. Error on empty.
        domains: [
            "your-cool-domain.here",
            "your-second-domain.here"
        ]
  • ✏️ Add a new option to the logs plugin to configure the line ending. By default, used \n.

New option:

# Logs plugin settings
logs:
    (....)
    # Line ending
    #
    # Default: "\n".
    line_ending: "\n"
http:
  address: 127.0.0.1:55555
  max_request_size: 1024
  access_logs: true <-------- Access Logs ON/OFF
  middleware: []

  pool:
    num_workers: 2
    max_jobs: 0
    allocate_timeout: 60s
    destroy_timeout: 60s
  • ✏️ HTTP middleware to handle X-Sendfile header.
    Middleware reads the file in 10MB chunks. So, for example for the 5Gb file, only 10MB of RSS will be used. If the file size is smaller than 10MB, the middleware fits the buffer to the file size.
http:
  address: 127.0.0.1:44444
  max_request_size: 1024
  middleware: ["sendfile"] <----- NEW MIDDLEWARE

  pool:
    num_workers: 2
    max_jobs: 0
    allocate_timeout: 60s
    destroy_timeout: 60s
  • ✏️ Service plugin now supports env variables passing to the script/executable/binary/any like in the server plugin:
service:
  some_service_1:
    command: "php test_files/loop_env.php"
    process_num: 1
    exec_timeout: 5s # s,m,h (seconds, minutes, hours)
    remain_after_exit: true
    env:  <----------------- NEW
      foo: "BAR"
    restart_sec: 1
  • ✏️ Server plugin can accept scripts (sh, bash, etc) in it's command configuration key:
server:
    command: "./script.sh OR sh script.sh" <--- UPDATED
    relay: "pipes"
    relay_timeout: "20s"

The script should start a worker as the last command. For the pipes, scripts should not contain programs, which can close stdin, stdout or stderr.

  • ✏️ Nats jobs driver support - PR.
nats:
  addr: "demo.nats.io"

jobs:
  num_pollers: 10
  pipeline_size: 100000
  pool:
    num_workers: 10
    max_jobs: 0
    allocate_timeout: 60s
    destroy_timeout: 60s

  pipelines:
    test-1:
      driver: nats
      prefetch: 100
      subject: "default"
      stream: "foo"
      deliver_new: "true"
      rate_limit: 100
      delete_stream_on_stop: false
      delete_after_ack: false
      priority: 2

  consume: [ "test-1" ]
  • Driver uses NATS JetStream API and is not compatible with non-js API.

  • ✏️ Response API for the NATS, RabbitMQ, SQS and Beanstalk drivers. This means, that you'll be able to respond to a specified in the response queue.
    Limitations:

    • To send a response to the queue maintained by the RR, you should send it as a Job type. There are no limitations for the responses into the other queues (tubes, subjects).
    • Driver uses the same endpoint (address) to send the response as specified in the configuration.

🩹 Fixes:

  • 🐛 Fix: local and global configuration parsing.
  • 🐛 Fix: boltdb-jobs connection left open after RPC close command.
  • 🐛 Fix: close beanstalk connection and release associated resources after pipeline stopped.
  • 🐛 Fix: grpc plugin fails to handle requests after calling reset.
  • 🐛 Fix: superfluous response.WriteHeader call when connection is broken.

📦 Packages:

  • 📦 roadrunner v2.5.0
  • 📦 roadrunner-plugins v2.5.0
  • 📦 roadrunner-temporal v1.0.10
  • 📦 endure v1.0.6
  • 📦 goridge v3.2.3

License Acceptance

By submitting this pull request, I confirm that my contribution is made under the terms of the MIT license.

PR Checklist

[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

  • All commits in this PR are signed (git commit -s).
  • The reason for this PR is clearly provided (issue no. or explanation).
  • The description of changes is clear and encompassing.
  • Any required documentation changes (code and docs) are included in this PR.
  • Any user-facing changes are mentioned in CHANGELOG.md.
  • All added/changed functionality is tested.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian added A-other Area: other C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc.. labels Oct 19, 2021
@rustatian rustatian added this to the 2.5.0 milestone Oct 19, 2021
@rustatian rustatian self-assigned this Oct 19, 2021
@codecov
Copy link

codecov bot commented Oct 19, 2021

Codecov Report

Merging #114 (6230263) into master (f3243d4) will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #114   +/-   ##
=======================================
  Coverage   43.49%   43.49%           
=======================================
  Files          12       12           
  Lines         561      561           
=======================================
  Hits          244      244           
  Misses        306      306           
  Partials       11       11           

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f3243d4...6230263. Read the comment docs.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian merged commit 571ec88 into master Oct 20, 2021
@rustatian rustatian deleted the release/2.5.0 branch October 20, 2021 08:40
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
A-other Area: other C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc..
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant