# HG changeset patch # User Christophe de Vienne <christophe@cdevienne.info> # Date 1671463790 -3600 # Mon Dec 19 16:29:50 2022 +0100 # Node ID 7f80dcd7d60780a5613ea6fd3c9fa3627eeeca46 # Parent 12b3a76b616a1231c43294bdc7f6d1f251e14c57 3.3.0 release notes and docs diff --git a/VERSIONS.json b/VERSIONS.json --- a/VERSIONS.json +++ b/VERSIONS.json @@ -1,5 +1,5 @@ { - "xbus-api": "default", - "xbus": "3.3.0-rc.2", - "go-xbus": "v3.3.0" + "xbus-api": "3.3", + "xbus": "3.3.0", + "go-xbus": "v3.3.1" } diff --git a/build-cmd-doc/go.sum b/build-cmd-doc/go.sum --- a/build-cmd-doc/go.sum +++ b/build-cmd-doc/go.sum @@ -889,7 +889,10 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= xbus.io/go-xbus/v3 v3.0.0-20210322163351-ce43a2e8be95/go.mod h1:7peOPZ7Z9iXm6ilJOH8BohQz7imB96eGMS1oz5cunuk= +xbus.io/go-xbus/v3 v3.0.0-20221216155809-144c12808280/go.mod h1:7peOPZ7Z9iXm6ilJOH8BohQz7imB96eGMS1oz5cunuk= xbus.io/go-xbus/v3 v3.2.0 h1:0bP6P2/vdr/501VNnlj1Ugr3wndxqSeAn30BqsoCgY4= xbus.io/go-xbus/v3 v3.2.0/go.mod h1:aFbqMkUwdhk12aepYcDsVlgxXyZG0oHCAXuOe8U9l9E= xbus.io/go-xbus/v3 v3.3.0 h1:8BXWZBqL7iSmxlVly9FkmF1jWlzeCItiDmICFku4ATw= xbus.io/go-xbus/v3 v3.3.0/go.mod h1:7peOPZ7Z9iXm6ilJOH8BohQz7imB96eGMS1oz5cunuk= +xbus.io/go-xbus/v3 v3.3.1 h1:kAKxTyhu8643IppHivYUUrEgPLYCqirIGvqk/0uh+68= +xbus.io/go-xbus/v3 v3.3.1/go.mod h1:7peOPZ7Z9iXm6ilJOH8BohQz7imB96eGMS1oz5cunuk= diff --git a/source/HISTORY.rst b/source/HISTORY.rst --- a/source/HISTORY.rst +++ b/source/HISTORY.rst @@ -2,9 +2,181 @@ History ======= +3.3.0 (2022-12-16) +------------------ + +3.3.0-rc.6 (2022-09-09) +----------------------- + +- sentinel: Add an optional periodic 'onlinestatus' survey. + +3.3.0-rc.5 (2022-07-18) +----------------------- + +- envelope-storage-ng: disable fragments merging, which fixes some case of + failure when fetching mid-size envelopes. + +3.3.0-rc.4 (2022-06-27) +----------------------- + +- service director fix: ProcessingEnd was not called in some case, leading + to RUNNING process with no jobs (which should never happen). + +- service director: log warnings in the process on timeout errors + +- envelope-storage-ng: fix handling an initial 'null' fragment + +3.3.0-rc.3 (2022-06-21) +----------------------- + +- xbusctl pipeline: + + - when serializing a pipeline, sort nodes and edges and remove empty values. + It makes ``set-all`` more stable. + + - ``set-all``: save new versions even if not different from the previous version. + +- service 'director' + + - fix job runner: multiple jobs could be saved as 'running' for a single actor + + - add SERVERTOOBUSY error messages to the process logs, as warnings. + +- implement the new api 'Debug'. Can be used through the ``xbusctl debug info`` + command. + +- http webhook: fix error handling when posting separate messages + +- log storage: sort logs by time + +- service 'metrics' + + - fix log storage size gauge + +3.3.0-rc.2 (2022-05-12) +----------------------- + +- pipelines: New 'sourcematch' properties: + + - ``byactor`` (boolean, default ``false``): if true, event types are ignored + + - ``priority`` (string): force the priority to 'low' or 'high' + +- http.webhook: + + - add a 'payload-type' setting. See the documentation for more details. + - add a 'headers' setting. + +- merge 3.2.10 changes + +3.3.0-rc.1 (2022-02-01) +----------------------- + +- Merge v3.2.3 to v3.2.9 changes +- Update the go toolchain to 1.16 +- Update go-xbus, gogo-nrpc & nats. +- Code cleaning: enable more golangci linters and clean the code accordingly + +- Fix EnvelopeStorageNG when saving multiple fragmented envelopes (:issue:`191`) +- ps export: add the 'created_at' process property (:issue:`189`) + +3.3.0-alpha.1 (2021-03-15) +-------------------------- + +- Refactoring of the 'director' service for better code readability. + +- Storage: + + - Add a metrics gathering EnvelopeStorage layer. It is automatically enabled + when xbusd metrics are 'on'. + + - Add a new EnvelopeStorage implementation with better performances: + EnvelopeStorageNG. Can be enabled with ``--storage.envelope.impl "sql-ng"``. + + - Add a fallback mechanism for EnvelopeStorage, to make envelope storage + transition smoothless. Can be enabled with ``--storage.envelope.fallback``. + + - Add a cached EnvelopeStorage layer that works on top of a persistent + implementation. Can be enabled with ``--storage.envelope.cache.enabled``. + The cache size is 1Gio max, which can be changed with + ``--storage.envelope.cache.max-size``. + 3.2 === +3.2.10 (2022-02-22) +------------------- + +- metrics: fix a heavy load on the db after a 'last' collection. Occured only if + the metrics where not, or no longer, collected. + +3.2.9 (2022-01-27) +------------------ + +- metrics: better handling of slow metrics (process count & storage stats) + + In some cases (mainly big databases) the slowness of metric fetching + led to a complete loss of those metrics. + +3.2.8 (2021-12-06) +------------------ + +- process query: fix a 'nats: maximum payload exceeded' occuring in some rare + cases. + +3.2.7 (2021-06-29) +------------------ + +- pipeline save: fix saving edges updates. + +3.2.6 (2021-06-03) +------------------ + +- metrics: precalculate process summary and storage stats to avoid timeout on + metrics. If no new data is available, the last result is collected again up + to 30 seconds after its initial collection (see + :ref:`administration-metrics`). + +3.2.5 (2021-04-27) +------------------ + +- Update go-xbus to v3.2.1, fixing a routine leak in xbus-http (and xbus-client + and xbusctl). + +3.2.4 (2021-04-02) +------------------ + +- xbusd: Fix replaying a process that initially failed with 'no matching + pipeline'. + +3.2.3 (2021-03-15) +------------------ + +- xbusd: Generate certificates without "Common Name" which is nowaday + deprecated and not supported in go 1.16. + +3.2.2 (2021-03-09) +------------------ + +- xbusctl actor list: fix 'STATUS' that was always 'online' +- xbusd: remove noisy useless logs +- xbusd: fix replayed process that remaining in "RUNNING" state + +3.2.1 (2021-03-04) +------------------ + +- graph verification: forbid 'sourcematch' on consumer and worker nodes (:issue:`76`) + +- xbusd: + + - add '--log-level' and '--quiet' settings (:issue:`71`). + - account accept: fix a crash when no CSR is pending (:issue:`154`) + - Fix a crash in control.Process.ExportStream if the process pipeline no longer + exists (:issue:`186`). + - process storage: optimize transaction isolation of process summary. It should + help high loads not to be impacted by the metrics gathering. + + 3.2.0 (2020-12-16) ------------------ diff --git a/source/administration/envelope-storage.rst b/source/administration/envelope-storage.rst new file mode 100644 --- /dev/null +++ b/source/administration/envelope-storage.rst @@ -0,0 +1,86 @@ +.. _administration-envelope-storage: + +Envelope Storage +================ + +Starting with version 3.3.0, Xbus provides a more efficient way to store the +envelopes in the database. This new storage is not enabled by default. + +A typical post-3.3.0 migration configuration would be: + +.. code-block:: yaml + + storage: + envelope: + impl: sql-ng + fallback: sql + cache: + enabled: true + max-size: 1G + +Primary Storage +--------------- + +Setting the primary storage, ie the storage for new envelopes, is done with the +option ``storage.envelope.impl``. It can take one of the following values: + +- ``sql`` (default). The historical envelope storage. It stores the envelope + content in different tables, allowing an access to the envelope inner data. + + The tables used are: + + - ``envelope`` : store the envelope metadata + - ``event``: store the message metadata (id, sum...) + - ``item``: store data chunks of the messages + + This storage has some performances issues, as it has to split then rebuild + the fragments all the time. + +- ``sql-ng``. This storage stores directly the serialized envelope fragments, + allowing a much faster read and write. + + It uses the following tables: + + - ``envelope_storage`` stores the envelope metadata + - ``envelope_storage_data`` stores the fragments + + +Fallback storage +---------------- + +As there is no way to migrate envelopes from a storage to another, a mechanism +of fallback storage is provided. + +It allows to specify a secondary storage, which will be used for reading +envelopes that are not found in the primary storage. + +The setting is ``storage.envelope.fallback``, and the possible values are the +same as ``storage.envelope.impl``. + + +Cache +----- + +A cache can be enabled on top of the chosen storage. Two options are available: + +``storage.envelope.cache.enabled`` + Enable the cache + +``storage.envelope.cache.max-size`` + (default "1G") Set the cache size + +Metrics +------- + +When xbusd metrics are enabled, new metrics are available: + +- ``xbus_storage_calls``, a summary with the following dynamic labels: + + - ``name``: The storage name ("cache", "default"...) + + - ``implementation``: The storage implementation ("cache", "sql", "sql-ng") + + - ``function``: The function. Possible values are: + + - ``ReadEnvelope``: Read a fragment + - ``StoreEnvelope``: Store a fragment diff --git a/source/administration/index.rst b/source/administration/index.rst --- a/source/administration/index.rst +++ b/source/administration/index.rst @@ -7,4 +7,5 @@ pipeline cert-maintenance db-maintenance + envelope-storage metrics diff --git a/source/go-xbus.rst b/source/go-xbus.rst --- a/source/go-xbus.rst +++ b/source/go-xbus.rst @@ -20,6 +20,21 @@ Versions ======== +3.3.1 (2022-12-16) +------------------ + +- api: regen the control api (with added Debug service) + +3.3.0 (2022-02-01) +------------------ + +- Update gogo-nrpc, switch to nats.go (instead of go-nats) + +3.2.1 (2021-01-06) +------------------ + +- Fix a routine leak in envelope emission + 3.2.0 (2020-12-16) ------------------ diff --git a/source/migration.rst b/source/migration.rst --- a/source/migration.rst +++ b/source/migration.rst @@ -21,6 +21,9 @@ the following environment variable: ``GODEBUG=x509ignoreCN=0``. +Certificates +'''''''''''' + The binaries of this version are compiled with go-1.16. In go 1.16, the x509 certificates 'CommonName' attribute is deprecated. Instead the SANs extension should be used. @@ -37,7 +40,13 @@ GODEBUG=x509ignoreCN=0 -.. _migration-to-3.3.0: +Envelope Storage +'''''''''''''''' + +A new storage for envelopes is available, and switching to it is recommended. +Learn more: :ref:`administration-envelope-storage`. + +.. _migration-to-3.2.0: To 3.2.3 ~~~~~~~~ diff --git a/source/releasenotes/3.3.0.rst b/source/releasenotes/3.3.0.rst new file mode 100644 --- /dev/null +++ b/source/releasenotes/3.3.0.rst @@ -0,0 +1,111 @@ +3.3.0 (2022-07-18) +================== + +After a long series of release candidates, Xbus 3.3.0 is finally available. + +Changes +------- + +The focus of this version is on performance & stability, with a few new features. + +New features +~~~~~~~~~~~~ + +- The new envelope storage implementations provide better performance for + storing and reading envelopes of all sizes. Learn more in the + :ref:`administration-envelope-storage` section. + +- ``ps export`` now exports the process creation date/time. + +- Pipelines: New 'sourcematch' properties: + + - ``byactor`` (boolean, default ``false``): if true, event types are ignored + + - ``priority`` (string): force the priority to 'low' or 'high' + +- New API "Debug": provides useful debug informations. Run ``xbusctl debug info`` + to discover what is available. + +- Service sentinel: Add an optional periodic 'onlinestatus' survey. + + This survey will make sure no actor stays offline when the client is actually + running, which can happen when a client has replicas. To enable it, use the + flag ``--sentinel-survey-onlinestatus-delay``, or the config.ini setting + ``sentinel.survey-onlinestatus-delay``. + +Improvements +~~~~~~~~~~~~ + +- The 'director' service is completely refactored for better code readability, + resulting in fewer bugs, and much more reliable behavior. + +- ``pipeline`` exports now sort nodes and remove empty values, making + ``set-all`` much more stable. + +- Many dependencies are updated to more recent versions, including nats & + gogo-nrpc. + +- The Go toolchain updated to go 1.16. Because of the long release candidate + phase, it is already a little outdated, and we will address this soon. + + +Documentation +------------- + +Documentation is online: + + https://docs.xbus.io/ + +Downloads +--------- + +Source and binaries are available on our download area: + +- https://dl.xbus.io/xbus/src/xbus-3.3.0-src.tar.xz + +version "personal": + +- https://dl.xbus.io/xbus/personal/xbus-3.3.0-linux_amd64.tar.xz +- https://dl.xbus.io/xbus/personal/xbus-3.3.0-windows_amd64.tar.xz +- https://dl.xbus.io/xbus/personal/xbus-3.3.0-darwin_amd64.tar.xz + +version "enterprise": + +- https://dl.xbus.io/xbus/enterprise/xbus-3.3.0-enterprise-linux_amd64.tar.xz +- https://dl.xbus.io/xbus/enterprise/xbus-3.3.0-enterprise-windows_amd64.tar.xz +- https://dl.xbus.io/xbus/enterprise/xbus-3.3.0-enterprise-darwin_amd64.tar.xz + +version "lts": + +- https://dl.xbus.io/xbus/lts/xbus-3.3.0-lts-linux_amd64.tar.xz +- https://dl.xbus.io/xbus/lts/xbus-3.3.0-lts-windows_amd64.tar.xz +- https://dl.xbus.io/xbus/lts/xbus-3.3.0-lts-darwin_amd64.tar.xz + +Docker images +------------- + +Get the docker images: + +version "personal": + + - orus/xbusd:3.3.0 + - orus/xbusctl:3.3.0 + - orus/xbus-client:3.3.0 + - orus/xbus-http:3.3.0 + - orus/xbus-fullenv:3.3.0 + +version "enterprise": + + - quay.orus.io/xbus-enterprise/xbusd:3.3.0-enterprise + - quay.orus.io/xbus-enterprise/xbusctl:3.3.0-enterprise + - quay.orus.io/xbus-enterprise/xbus-client:3.3.0-enterprise + - quay.orus.io/xbus-enterprise/xbus-http:3.3.0-enterprise + - quay.orus.io/xbus-enterprise/xbus-fullenv:3.3.0-enterprise + +version "LTS": + + - quay.orus.io/xbus-lts/xbusd:3.3.0-lts + - quay.orus.io/xbus-lts/xbusctl:3.3.0-lts + - quay.orus.io/xbus-lts/xbus-client:3.3.0-lts + - quay.orus.io/xbus-lts/xbus-http:3.3.0-lts + - quay.orus.io/xbus-lts/xbus-fullenv:3.3.0-lts diff --git a/source/releasenotes/index.rst b/source/releasenotes/index.rst --- a/source/releasenotes/index.rst +++ b/source/releasenotes/index.rst @@ -4,6 +4,7 @@ ============= .. toctree:: + 3.3.0 3.3.0-rc.6 3.3.0-rc.5 3.3.0-rc.4