Skip to content

Releases: bytebeamio/uplink

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

v2.9.0-android-rc

18 Oct 10:33
Compare
Choose a tag to compare
* fix typo

* make utilities compile for android

v2.9.0

16 Oct 14:56
Compare
Choose a tag to compare

Significant Changes

  • Downloads are continuously retried till the action gets timedout.

What's Changed

  • feat: name threads when spawning by @de-sh in #292
  • fix: continuous retry till timeout by @de-sh in #294
  • fix: usize multiplication overflow on 32bit machines by @de-sh in #295
  • refactor: remove timeout information from apps by @de-sh in #293

Full Changelog: v2.8.1...v2.9.0

v2.8.1-rc

29 Sep 08:07
0dca427
Compare
Choose a tag to compare
v2.8.1-rc Pre-release
Pre-release

What's Changed

  • test: add scripts for automating QA environ setup by @de-sh in #288
  • log: start/complete reading from persisted stream by @de-sh in #291

Full Changelog: v2.8.0...v2.8.1

v2.8.0

26 Sep 15:49
Compare
Choose a tag to compare

Significant Changes

  • We now create and use .downloaded/.persistence directories where uplink was started from when the user has not otherwise configured the path.
  • Uplink will check and ensure there is disk space to download file into, erring out otherwise.
  • Uplink only retries downloads that failed due to network error, that too by continuing from where last attempt had failed at, instead of starting from scratch, but only upto 3 times.
  • Code maintenance and readability improvements also included.

What's Changed

  • docs: quickstart uplink by @de-sh in #266
  • fix: retry only reqwest errors by @de-sh in #269
  • fix: downloader thread error out without logline by @de-sh in #270
  • fix: spawn generators to remove time skew by @de-sh in #272
  • refactor: TunshellSession ~> TunshellClient by @de-sh in #273
  • test: use current_dir, remove unused loop by @de-sh in #271
  • refactor: reintroduce single device simulator as an uplink built-in by @de-sh in #274
  • refactor: setup connections with bridge before spawn by @de-sh in #277
  • feat: ensure disk has enough space to download file into by @de-sh in #268
  • fix: simulator should send action_status to bridge as ActionResponse by @de-sh in #283
  • feat: don't persist simulated streams in-memory by @de-sh in #284
  • fix: timeout process as per config by @de-sh in #287
  • refactor: split handling of data and actions by @de-sh in #279
  • feat: try continuing partially downloaded files by @de-sh in #286

Full Changelog: v2.7.1...v2.8.0

v2.7.1

09 Aug 04:37
e795541
Compare
Choose a tag to compare

What's Changed

  • fix: create new directories with correct permissions by @amokfa in #265

Full Changelog: v2.7.0...v2.7.1

v2.7.0

06 Aug 18:19
c9cd830
Compare
Choose a tag to compare

Significant Changes

  • Uplink will start with a TCP interface on port 5050 by default if the tcpapps field is not defined in the config.toml.
  • Uplink now supports triggering a download and then running the downloaded file as a shell script. This feature can be enabled with the following example config:
# Redirecting the download action to the script runner post download
action_redirections = { "send_script" = "run_script" }

# Configure the script runner to accept run_script actions
script_runner = [{ name = "run_script" }]

# Configure the downloader to accept send_script actions and download script into path
[downloader]
actions = [{ name = "send_script" }]
path = "/path/to/file"

What's Changed

  • feat: built-in script runner by @de-sh in #252
  • Logcat fixes by @amokfa in #250
  • test: verify tunshell action pass-through by @de-sh in #263
  • feat: default main on port 5050 if tcpapps unconfigured by @de-sh in #264

Full Changelog: v2.6.0...v2.7.0