History

3.2

3.2.0-beta.1 (2020-06-23)

  • make fullenv and http tests more solid on slow environments
  • switch to native zerolog in ‘storage’, ‘services’ and ‘auth’
  • xbusctl:
    • pipeline list: - cleaner output - add a ‘–extended’ flag - add flags to filter by status, actor, account or msgtype
    • Add a pipeline get-all command that write all the pipeline definitions to a single of multiple files at once.
    • Add a pipeline set-all command that synchronizes files exported by get-all to xbus.
    • account list and actor list now print tables instead of lists.

3.2.0-alpha.1 (2020-06-10)

Warning

On a big database, the migration may take several hours because of the time conversion to UTC. Before upgrading, make sure you purge the process, envelopes and logs.

  • New feature: process replay. See xbusctl ps replay

  • xbusd/control: implement the ‘Process.QuerySummary’ API.

  • database:

    • all datetimes are stored in UTC
    • add index on process_log_entry.log_processed for faster server startup
  • xbusctl:

    • Add the ‘ps summary’ command.
    • Add the ‘envelope stat’ command.
    • Add the ‘logs stat’ command.
  • storage: Add Stat() on LogStorage and EnvelopeStorage()

  • metrics: the bus-wide metrics can be separated in a dedicated endpoint /metrics/global. To enable it, use the flag --metrics-merge-global=false, of the configuration file metrics.merge-global: false.

  • metrics: add new metrics about processes and actor execution time. This metrics are labeled with the pipeline name and version, the emitter name, and when applicable the process status or the actor processing result:

    • xbus_process_completion_time_seconds Process completion time, in seconds
    • xbus_process_count Number of processes in the bus
    • xbus_service_director_job_process_time_seconds The actor job process time, measured from the director service.
    • xbus_service_director_job_total_time_seconds The actor job wait and execution time, measured from the director service.
    • xbus_service_director_job_wait_time_seconds The actor job wait before effective process, measured from the director service.
  • metrics: add storage stats:

    • xbus_storage_count Number of items in the storage
    • xbus_storage_size Total size of the storage
  • xbusd: switch to zerolog, along with the upgrade of go-xbus

3.1

3.1.0 (2020-05-03)

  • Update github.com/dlmiddlecote/sqlstats to v1.0.1

3.1.0-rc.3 (2020-05-14)

  • Remove the documentation and move it to the ‘xbus-docs’ project

  • Update to go-xbus v3.1.0

  • Update gnatsd to v1.4.1

  • Code cleaning

  • Use better implementation for collecting db stats.

    Note

    The database metrics have a new prefix: go_sql_stats_connections_

3.1.0-rc2 (2020-03-18)

  • Documentation: improve docker documentation
  • xbusctl ps flags renaming:
    • --status-changed-since -> --status-changed-from
    • --status-unchanged-since -> --status-changed-to
    • --status-created-from -> --status-created-at-from
    • --status-created-to -> --status-created-at-to
  • xbus-http: fix passing settings through environnement variables
  • µ-service ‘metrics’: add gauges for certificates days to expiration, and send notifications when expiration is in less than 28 days (issue 182)
  • tests: avoid some race conditions and make the tests more reliable on slow machines.

3.1.0-rc1 (2020-03-02)

  • Package import path is now ‘xbus.io/xbus’
  • xbusd:
    • Fix xbusd --version crash when no configuration is found.
    • Add db indexes on process & process_state, improving the ‘xbusctl ps’ performances
  • xbus-http:
    • fix posting id-less envelopes and events (issue 181)
    • remove compatibility with xbus 3.0.0-beta.11 api
  • xbus-fullenv: ignore GOPATH for finding the binaries.
  • Add missing files in ‘sdist’
  • docker images: add some labels (name, version, etc)
  • merge version 3.0.6 changes

3.1.0-beta.2 (2020-01-21)

  • xbusd:
    • add instance info in the settings (instance.name, instance.production and instance.logo)
    • refuse to start a production instance with a test/personal binary
  • build: build static binaries, which fixes the docker images
  • tests: speed-up database-related tests by clearing the tables instead of recreating the schema.
  • options: add instance informations (name, logo, ‘production’ flag), that are sent to sentry and prometheus. If the instance is flagged ‘production’, the personal ‘xbusd’ binary will refuse to start.
  • use the new message api of go-xbus.
  • sql.EnvelopeStorage: fix bugs revealed by the new message api:
    • In some case the storage did not detect the envelope completion
    • In some case ReadEnvelope returned an invalid EventIDs value
  • merge version 3.0.5 changes

3.1.0-beta.1 (2019-09-30)

  • xbusd:
    • update to go-1.13
    • implements authentication by login/password
    • implements authentication by session token
    • implements Director.GetRunningActorRequestList
    • Fix json client support on various API
    • EnvelopeStorage is more compliant and accepts eventIDs to be sent anytime
    • Handle Process.CreatedAt field
    • build windows and macosx binaries in addition to linux ones.
  • xbus-ctl:
    • “ps” filter by creation date with --created-from and --created-to
    • “ps”: status-changed-since and status-unchanged-since now accepts dates, and durations with units “d” (days) and “w” (weeks).
    • “ps”: display the creation-date in the process list
  • xbus-http:
    • add flags --http-host and --http-port
    • embed a websocket gateway to nats on /__raw__. Disabled by default
    • can serve a Web GUI on /ui if its sources are passed on the cli
    • supports user/password authentication
  • xbus-fullenv
    • Allow actor config entries to be added to the fullenv file.

3.0

3.0.6 (2020-01-04)

  • small doc fixes
  • fix the source distribution
  • ProcessList: lower batch size to avoid a ‘nats: maximum payload exceeded’ in some case (issue 180)

3.0.5 (2019-10-17)

  • service ravencapture:
    • improve the message that is sent to sentry with a process fails. The new message will contain the pipeline and emiter names, and if available the first error log message by the actor that failed. This helps sentry grouping entries in a more usable way, and the issue labels will give information immediately.
    • Include all the process logs and not only the ERROR logs. It helps analysing process that failed with no ERROR message.
  • xbus-http webhooks: add settings to define the http codes that needs reattempts and the ones that means a success.

3.0.4 (2019-08-22)

  • xbusd:
    • control.Process.Purge: improved performances
  • xbusctl:
    • fix ps purge failure with too many processes

3.0.3 (2019-06-25)

  • metrics: fix database metrics
  • ps purge: change how the max purge jobs count is calculated, resulting in better parallelisation when the storage process has more database connections.

3.0.2 (2019-07-24)

  • logstorage: fix storing non-utf8 log messages. This bug could cause crashes in the director service, leading to zombie processes.

  • xbusd: disable completely the raven capture if no SentryDSN is set.

  • xbusctl pipeline save don’t overwrite the source file anymore.

  • metrics:

    • Add gauges for the workers and consumers online status.
    • Add database connections metrics
    • Export most gnatsd ‘Varz’ indicators as prometheus metrics

3.0.1 (2019-06-19)

  • actor deletion is no longer blocked if some logs refer to it
  • envelope purge is no longer blocked if some logs refer to it
  • account deletion: related actors are also deleted after user confirmation
  • small documentation changes
  • pipelines (and process): consumers can be matched by name or id and not only by roles.
  • log an error when an actor is marked offline after not responding
  • xbusd-enterprise & xbusd-lts: fix an excessive CPU usage.
  • xbusctl:
    • actor list now display the name of the account of each actor
    • account: add a ‘export’ command to recreate a client configuration file.
    • ps export: fix exporting huge list of process (10th of thousands)
  • xbus-http: add the ‘renew-cert’ command
  • ‘renew-cert’ command:
    • print an error if reset-cert was not applied to the account prior to the cert renewal.

3.0.0 (2019-03-26)

  • service envelopestorage: raise slow emitter detection delay from 15 to 30 seconds.
  • sentry: report failed Process to sentry
  • xbusd: new setting “sentry.environment”

3.0.0-rc.6 (2019-02-15)

  • API:

    • ProcessState.Envelope now returns a single Process
    • ProcessState.Envelope subject: emitter is now a method param

    Those changes reflects the fact that a single envelope should never trigger several _concurrent_ processes.

3.0.0-rc.5 (2019-02-01)

Warning

All the NATS subject of the API are now prefixed with “xbus.default” instead of just “xbus”, which breaks the API. Xbusd, xbus-http, xbusctl and _all_ the clients must be upgraded at the same time.

It also impacts hand-written clients that need to adjust the subject they use.

  • xbusctl: Fix ‘xbusctl pm’ timeout on big lists.
  • xbusd: Fix pipeline saving to forbid non-draft pipeline update.
  • xbusd: Fix a crash after 1000 process on one actor through xbus-http /processrequest (#159).
  • xbusd --version now ignores completly the configuration and the ‘certs’ directory (#160).

3.0.0-rc.4 (2019-01-22)

  • xbusd cert generate: improve –host-defs documentation
  • xbus-fullenv: extend variable substitution to client fullenv-specific settings
  • xbusd: fix pipeline matching by actor/roles (#155)
  • xbusd: fix service ‘control’ stall if a ps export is canceled (#157)
  • xbusd: service ‘control’ process functions use a worker pool, enabling parallel executions of ‘xbusctl ps’ commands.
  • xbusd: fix help of the ‘–config’ flag (#115)
  • xbus-http: implements auto-reconnection of webhooks (#153)
  • xbusctl: ps export: add a “–quiet” flag to disable extra logging (#144)

3.0.0-rc.3 (2019-01-07)

  • database: remove actor.config size limit.
  • xbusd: adjust control.Process.Query batch size to avoid too big fragments (see #142).
  • xbus-http: fix webhooks response handling (see #139, #140 and #141)

3.0.0-rc.2 (2018-12-27)

  • xbus-fullenv: add a ‘–var’ flag to do variable substitution in the configuration file.
  • documentation: Add a ‘migration’ section
  • Enforce client protocol version compatibility: a client must advertise its protocol version when connecting, and will fail to authenticate if the version is not present or is not compatible with the server protocol version.
  • Add link options for producing licensed binaries.
  • Remove some ci files
  • Add json support to the WhoAmI service

3.0.0-rc.1 (2018-12-14)

  • fix the 3.0.0-beta.14 migration script
  • The client configuration are not rewritten at ‘register’ anymore. The TLS entries are written to one or several separate files instead.
  • The client ‘actors’ configuration entry now accepts actor names as keys instead of integer values
  • http: Fix an issue with enveloppe/process polling returning the same value several times (see #133)
  • update most of the dependencies (see #134)
  • xbusd: The default ‘cert-dir’ is now relative to the configuration file instead of the current directory.

3.0.0-beta.16 (2018-12-03)

  • Base the xbus-fullenv docker image on busybox

  • Fix the certificate renewal tests

  • Detect stalled envelope emissions and cancel the process accordingly

  • xbus-fullenv run:

    • Add the --auto-startup flag
    • Add the --batch flag

3.0.0-beta.15 (2018-11-19)

  • Renamed ‘graph’ to ‘pipeline’ in CLI and API
  • xbusctl
    • Fix configuration by environment variable
    • ps export: Add --export-jobs flag
    • ps: Add --pipeline flag to filter by pipeline

3.0.0-beta.14 (2018-11-13)

Note

This is the last version for which a SQL script has to be applied manually. Once done, run xbusd migrate to finalize the database migration.

  • [ci] Upgrade go to 1.11

  • xbusd migrate: new command that takes care of updating the database.

  • Add certificate renewal tooling:

    • (xbusctl|xbusd) account reset-cert
    • (xbus-client|xbusctl) renew-cert

3.0.0-beta.13 (2018-10-30)

  • xbusd:
    • Implements process cancel (#27)
  • xbusctl:
    • ps display the graph name & version, and the emitter name instead of their ids
    • Fix a crash on ‘ps pause’ and other ‘ps’ subcommands (#124)
    • Add the command ps cancel for canceling processes (#27)
  • doc:
    • Embed a basic documentation of the API

3.0.0-beta.12 (2018-10-22)

Note

This version is NOT protocol compatible with former versions of xbus. xbusd and the clients must all be upgraded simultaneously.

  • features:
    • Store configuration entries on the actor definitions in the server. This allow external tools like xbus-http to remain stateless apps by storing a few configuration entries on the actors.
  • xbusd:
    • Implements the new Process.ExportStream api endpoint
    • Implements the new Storage.ActorLeaving api endpoint
    • Implements the new Online/Unresponsive properties of Actor
    • As part of the actor protocol refactoring: - Implements the new Director service - Implements the new EnvelopeStorage service - Drop the emission micro-service
    • Gracefully handle broker overflow (#41)
    • A gateway account can now login for itself, getting access to the actor definitions.
    • A gateway account can now login as an actor without extra credentials.
    • service register: Invalid account names are now rejected (#118)
  • xbusctl:
    • register now gives the actual xbusd command to run to complete the registration
    • ps export
      • is not size-limited anymore.
      • added --export-envelope to enable envelope export
      • added --export-envelope-size-limit to limit envelope export size
    • ps pause|resume now takes the same filtering options as the other ps commands.
    • Add the account get-apikey and account set-apikey commands (#101)
    • Add the envelope get command (#96)
    • graph query is now graph list for consistency purpose.
  • xbus-client:
    • register now gives the actual xbusctl command to run to complete the registration
  • Merge xbus-http into the xbus project. The http gateway is becoming an official part of xbus.
  • Introduce a new tool, Xbus Fullenv. It is meant to set up and pilot test environments of xbus from a single configuration file.

3.0.0-beta.11 (2018-04-13)

Note

This version is NOT protocol compatible with former versions of xbus. xbusd and the clients must all be upgraded simultaneously.

  • Reimplement all the NATS calls and handlers with nrpc and the xbus-api proto files.
  • Expose prometheus metrics of the API
  • Implement ‘xbusctl graph get’
  • When –config is used, log an error if the configuration file is not found.
  • Fix: In some case (especially when xbus-http is involved), the emission service would deadlock itself.
  • Fix: Server crashed at startup if sentry was enabled.
  • Fix: Purges would timeout with big volumes of process or envelopes.
  • Optimization: Add indexes to item and log_entry tables. This fix performances issues with big envelopes.
  • Update gnatsd to 1.0.4
  • Switch to go 1.8
  • Cleanups
  • ci: provides automatically built packages and docker files
  • Fix: A ‘active’ graph that is invalid could not be deactivated.

3.0.0-beta.10 (2017-10-19)

  • Fix 3.0.0-beta.9 migration script performances on medium to large databases.
  • Fix an issue when too many inputs or ouputs were defined on a graph node
  • Fix a deadlock in the emission service that can happen with big envelopes sent in many small envelopes with the right timing.
  • Improve process state management:
    • State update is now centralized in a dedicated routine, avoiding some possible race conditions.
    • If an error occurs during state update, the process status is now set in ‘error’.
    • When a process status is set to ‘error’, the reason is added to the process state.
  • xbusd:
    • Add a sentry.dsn setting to send errors to sentry
  • xbus-client:
    • Add a sentry.dsn setting

Database

  • Table graph_node:
    • Change column inputs type to TEXT
    • Change column outpus type to TEXT
  • Table process_log_entry:
    • Add column processing_error (BOOLEAN)
  • Table process_state:
    • Add column status_reason (TEXT)

3.0.0-beta.9 (2017-09-19)

  • solve issue #64 (connection errors when too many client connect at the same time)
  • switch to gnatsd 1.0.2
  • Implement the process ‘export’ and ‘purge’ APIs
  • Implement the new process filtering API
  • Track a few the process change timestamps
  • Implement the envelope and logs purge APIs
  • xbusd:
    • add ‘–gnatsd-http[s]-(host/port)’ flags for enabling gnatsd monitoring
    • cert generate: add a ‘–expire’ flag for certificate validity range
    • account accept: add a ‘–cert-expire’ flag for the account cert validity range
  • xbusctl:
    • ‘actor reject’ now accepts the same arguments as ‘actor accept’
    • Add the ‘ps export’ and ‘ps purge’ commands
    • Use the new process filtering API to improve the cli
    • Add the ‘envelope purge’ command
    • Add the ‘logs purge’ command
    • account accept: add a ‘–cert-expire’ flag for the account cert validity range

Database

  • Table process_state: - Add field status_changed - Add field nodes_state_changed - Add field pm_changed
  • Tables emission, process_log_entry, process_state, route: Add ON DELETE CASCADE to *_process_id_fkey foreign keys
  • Table route_target: Add ON DELETE CASCADE to route_target_route_id_fkey

3.0.0-beta.8 (2017-06-03)

  • Add a postmortem API, service and CLI. They allow to inspect and handle failed processes.
  • Add database connection limit parameter: database.max-connections
  • Add APIs and command line tools (:prog:`xbusctl pm <xbusctl>`) for handling processes with errors or warning after they ended.
  • Add full environment tests, allowing some tests not possible with fullstack_tests, like testing the cli tools, testing random server crashes…
  • Update the graph API implementation, following go-xbus/api changes
  • Make envelope reception more robuts (Issue #39). Some inconsistent states are not possible anymore.
  • Handle gateway authentication with api keys.
  • Fix all the deadlocks we found on heavy load.
  • graph validation: Now identify invalid emitter/consumer input/output, and sourcematch-less emitters.
  • xbusd:
    • ‘account accept/reject’ now takes id or name in addition to fingerprints
  • xbusctl:
    • Add ‘actor delete’
    • Fix ‘actor list’ filter handling
    • ‘actor accept/reject’ now takes a name or id
    • Add ‘account delete’
    • Refactor ‘graph’ commands. The graph source file is now never updated by the command, and the name, version and status are updated by command line actions and arguments, not in the source file.
  • [doc] Document the “processing end” message in the connector API doc.
  • [doc] Fix minor issues in the connector API doc.

Database

  • Table process_state: - Add field pm_level varchar(255) - Add field pm_status varchar(255) - Add field pm_comment varchar(255)

Notice

  • A backwards incompatible change has been introduced in the configuration: database becomes database.dsn, the cli flag database becomes database-dns. Refer to the sample file etc/xbusd_sample.yaml.

3.0.0-beta.7 (2017-03-09)

  • Add support for fragmented envelopes, which implies a lot of code cleaning and a few refactoring.
  • Add a route cache
  • Reduce broker/emission coupling

Database

  • Now requires Postgresql >= 9.5
  • New Table: route
  • New Table: route_target

3.0.0-beta.6 (2017-02-03)

  • [doc] Update Quickstart to match latest go-xbus demo.relay settings
  • [auth] Remove debug log when a client is authenticated
  • Switch to go-xbus 3.0.0-beta.6
  • Fix a host / port parsing issue that was preventing the nats-host setting from being set to 0.0.0.0.

3.0.0-beta.5 (2017-01-26)

  • Switch to go-xbus 3.0.0-beta.5
  • Fix: graph validation error message for invalid edges were wrong (‘origin’ was switched with ‘destination’.
  • Doc: Add a fully fonctionnal graph to the Quickstart section, making it a complete and running example of a bus.

API

  • New: Graph nodes how have a actors attribute, which references actors by name or id. The actorids attribute is deprecated.
  • Fix: In case no graph matches a new envelope, a ack error is returned to the emitter.

Database

  • New: Table graph_node: add field actors varchar(255)

CLI

  • xbusd: Allow custom hostdefs for server CA
  • xbus-client: Embed demo actors from go-xbus/demo

3.0.0-beta.4 (2017-01-20)

  • Build releases binaries from the right changeset.
  • Extract reusable parts of this program to go-xbus.
  • Switch to go-xbus 3.0.0-beta.4

3.0.0-beta.3 (2017-01-13)

API

  • API Break: Add the “ActorProcessingEnd” entry point. It must be called by consumers to signal processing success or failure, and by other actors for processing errors. It adds support for long-running processing by consumers without hitting transfert timeout.
  • API Beak: Rename ActorType to ActorKind, and all ‘Type’ fields of type ActorType to ‘Kind’.
  • API Addition: Add a logging API for actors.

Database

  • Provides a SQL migration script, that does: - actor table: Drop unique index (name / type). - actor table: Add a unique index (name). - actor table: Rename type to kind. - emission table: event_positions type changed to TEXT (was VARCHAR(255)) - New log_entry table that stores log messages.

Other

  • Gnatsd: switch to upstream version (which merged our TLS auth related patch)
  • Better test coverage
  • More graph examples in the graph doc
  • Graph validation: Check for invalid or duplicate node ids
  • xbus-client: Better behavior when configuration file is missing
  • make xbus-client/cmd extendable
  • client: Add apis to easily start a group of actors from a configuration file

3.0.0-beta.2 (2016-12-22)

  • Graph validation. When pushing a graph, a list of validation errors (if any) will be returned and displayed. A non-valid graph cannot be published, preventing many common mistakes that would be otherwise hard to detect.
  • Optionnally capture SQL logs (see xbusd serve options –debug-sql-queries and –debug-sql-bindings)
  • Embed detailed version information in the binaries (try –version and –full-version flags on the binaries)
  • Upgrade gnatsd embedded version
  • Build static binaries
  • Embed documentation in the distribution package
  • Documentation fixes
  • A few logging level changes

3.0.0-beta.1 (2016-12-12)

Initial release. It features:

  • Handling of simple envelopes
  • Graphs
  • Process
  • Account/actors management