Skip to content

Releases: bytebeamio/uplink

v2.14.1

29 Aug 06:34
Compare
Choose a tag to compare
v2.14.1 Pre-release
Pre-release

Significant Changes

  1. Allow configuring default buffer size for backlog management in serializer, instead of using the default 10MB, decreases unnecessary RAM hogging.
# Configure uplink to only allocate 1KB of backlog buffer by default
default_buf_size = 1024
  1. Allow configuring max number of data streams that uplink can batch, instead of a hardcoded limit of 20, this allows users to be more in control of their on-device setup.
# Configure uplink to allow upto 100 data streams
max_stream_count = 100

NOTE: When using TOML to configure, keep these configs at the top of the file to avoid config mismatch.

What's Changed

  • feat: write storage to human readable file by @de-sh in #352
  • fix: configurable default backlog buffer size by @de-sh in #353
  • test: integration to tests/, serializer with tokio::test by @de-sh in #354
  • refactor: separate out DeviceConfig by @de-sh in #356
  • fix: allow configuring max_stream_count by @de-sh in #358

Full Changelog: v2.14.0...v2.14.1

v2.14.0

09 Jul 11:56
Compare
Choose a tag to compare

Significant Changes

  1. New http endpoint on uplink console allows user to figure out if upstream connection to broker is alive or closed.
# Configure uplink to expose console
[console]
enabled = true
port = 3333
# Poll status of uplink when not in network
$ curl -X GET http://localhost:3333/status
{"connected":false}⏎

# Poll status of uplink when not in network
$ curl -X GET http://localhost:3333/status
{"connected":true}⏎   

What's Changed

  • feat: endpoint for uplink connection status by @de-sh in #350
  • feat: retry tcpapps bind after failure

Full Changelog: v2.13.0...v2.14.0

v2.13.0

20 Jun 10:35
Compare
Choose a tag to compare

Significant Changes

Actions can now be remotely cancelled on device by using a new "name": "cancel-action" action. When configuring uplink on startup, if the field "cancellable" is set to true for an action route, uplink will forward "cancel-action" actions to the handler on the configured route.

What's Changed

New Contributors

Full Changelog: v2.12.2...v2.13.0

v2.12.2

17 May 08:41
Compare
Choose a tag to compare

What's Changed

  • feat: allow stoppage of downloader to free up network by @de-sh in #341
  • fix: update deserialize utility by @de-sh in #345

Full Changelog: v2.12.1...v2.12.2

v2.12.1

10 May 14:04
a410693
Compare
Choose a tag to compare

Brief: Bug fixes within downloader that ensures that uplink delivers on the minimum expectations for features such as continuation post restart and deletion of file on timeout.

What's Changed

  • fix: delete downloaded file on action timeout by @de-sh in #340
  • fix: duration in seconds missing fractions by @de-sh in #342
  • fix: bad file descriptor by @de-sh in #343
  • fix: downloader retry on DNS at startup by @de-sh in #344

Full Changelog: v2.12.0...v2.12.1

v2.12.0

05 Apr 13:53
Compare
Choose a tag to compare

Significant Changes

  • DEPRECATED: kind field in Action struct is deprecated as it was unused, applications will BREAK if they expect this field to be a part of the action JSON message.
  • uplink now forwards errors faced when it is forced to retry a download, this improves observability into the agent.
  • Downloader now retries a download post restart if it was discontinued only because of an uplink shutdown.

What's Changed

  • fix: need not retry HTTP status errors by @de-sh in #332
  • deprecate kind field in actions by @de-sh in #331
  • fix: forward error messages triggering retry by @de-sh in #333
  • refactor: downloader by @de-sh in #336 and #338
  • feat: restart download post reboot by @de-sh in #335

Full Changelog: v2.11.0...v2.12.0

v2.11.0

20 Feb 14:24
Compare
Choose a tag to compare

Significant Changes

  • batch_size replaces the buf_size field name in the config file for configuring a stream's batch size limit, configs using the buf_size term will continue to be supported for a while, so we request users of uplink to start transitioning their configuration files to using the correct term as soon as possible.
  • Downloader now supports sha256sum verification, if the action includes the relevant information.
  • Precondition Checks allows users to configure a location in the filesystem against which uplink will verify if there is enough free space to both download and decompress the file into. This can be configured by including the following changes in your uplink config file:
- action_redirections = { update_firmware = "install_firmware" }
+ action_redirections = { update_firmware = "download_firmware", download_firmware = "install_firmware" }

+ [precondition_checks]
+ actions = [{ name = "update_firmware" }]
+ path = "/path/to/decompress"

[downloader]
- actions = [{ name = "update_firmware" }]
+ actions= [{ name = "download_firmware" }]
path = "/path/to/download"

What's Changed

  • refactor: action registration by @de-sh in #325
  • style: batch_size clarification by @de-sh in #326
  • feat: verify file checksum using sha256 by @de-sh in #323
  • refactor: reorganize binary helpers and mod config by @de-sh in #324
  • fix: calculate network for concerned period by @de-sh in #329
  • feat: precondition checks as a feature by @de-sh in #322

Full Changelog: v2.10.0...v2.11.0

v2.10.0

23 Jan 15:53
Compare
Choose a tag to compare

Significant Changes

  • Preferential ordering of streams during network recovery now allows certain streams to be pushed onto network quicker than others when recovering from a network incident, this can help users ensure that data on certain stream is not blocked due to large backlog on another stream. Configurable with the addition of a line into the config toml file as explained with the following example diff:
[streams.device_shadow]
topic = "/tenants/{tenant_id}/devices/{device_id}/events/device_shadow/jsonarray"
flush_period = 5
+ priority = 75

[streams.C2C_CAN]
topic = "/tenants/{tenant_id}/devices/{device_id}/events/C2C_CAN/jsonarray/lz4"
buf_size = 100
compression = "Lz4"
+ priority = 50

NOTE: Higher priority streams get pushed first, so in the above case the C2C_CAN stream will wait for data waiting on the device_shadow stream. Please ensure that device configurations are updated such that streams containing more important real-time data gets pushed earlier than others. We have already configured the action_status stream to have the highest priority given it's importance to the working of the platform, the default config of which is now as follows:

[action_status]
topic = "/tenants/{tenant_id}/devices/{device_id}/action/status"
buf_size = 1
flush_period = 2
priority = 255 # highest priority for quick delivery of action status info to platform
  • New metrics stream uplink_serializer_stream_metrics tracks per stream serialization and compression stats(sizes and times).

NOTE: this is different from uplink_serializer_metrics which tracks the serializer as a whole and uplink_stream_metrics which tracks per stream stats on the data bridge.

  • Uplink now ensures full graceful shutdown with all data on streams having disk persistence enabled being written onto disk during shutdown by force flushing their write buffers instead of waiting to overflow and hence getting dropped with the process exit. Similarly packets inflight/waiting for acknowledgement from broker are also saved onto disk and recovered during a restart event.

What's Changed

  • feat: track disk space utilized by persistence by @de-sh in #312
  • refactor: use StreamConfig in Serializer by @de-sh in #296
  • refactor: handle files on disk as PersistenceFile by @de-sh in #314
  • chore: use workspace dependencies by @de-sh in #315
  • refactor: CtrlTx to send control messages to various uplink components by @de-sh in #316
  • feat: enable simulation on non-demo tenants by @pranavlpin in #317
  • feat: extract out system stat collector by @de-sh in #318
  • fix: ensure storages are force flushed during uplink shutdown by @de-sh in #311
  • feat: persist inflight publishes and send on restart by @de-sh in #299
  • feat: track stream-wise compression stats in serializer by @de-sh in #320
  • feat: preferential ordering of streams during read from disk by @de-sh in #289

New Contributors

Full Changelog: v2.9.1...v2.10.0

2.10.0-rc

15 Jan 13:52
fe7a9c2
Compare
Choose a tag to compare
2.10.0-rc Pre-release
Pre-release

What's Changed

  • feat: track disk space utilized by persistence by @de-sh in #312
  • refactor: use StreamConfig in Serializer by @de-sh in #296
  • refactor: handle files on disk as PersistenceFile by @de-sh in #314
  • chore: use workspace dependencies by @de-sh in #315
  • refactor: CtrlTx to send control messages to various uplink components by @de-sh in #316
  • feat: enable simulation on non-demo tenants by @pranavlpin in #317
  • feat: extract out system stat collector by @de-sh in #318
  • fix: ensure storages are force flushed during uplink shutdown by @de-sh in #311
  • feat: persist inflight publishes and send on restart by @de-sh in #299
  • feat: track stream-wise compression stats in serializer by @de-sh in #320

New Contributors

Full Changelog: v2.9.1...2.10.0-rc

v2.9.1

16 Nov 13:09
Compare
Choose a tag to compare

This patch fixes ActionResponse.action_id serialization and includes other maintenance updates.

What's Changed

Full Changelog: v2.9.0...v2.9.1