Skip to content

Releases: bytebeamio/uplink

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

v2.7.0-react

01 Aug 05:50
b7a9a56
Compare
Choose a tag to compare
v2.7.0-react Pre-release
Pre-release

What's Changed

Full Changelog: v2.6.0...v2.7.0-react

v2.6.0

01 Aug 04:27
be8e019
Compare
Choose a tag to compare

Significant Changes

  • Uplink now flushes all streams waiting on bridge during shutdown and waits 5 seconds before shutting down, allowing the transmission or persistence of data. Previously any data left unflushed on bridge during shutdown would have been lost.
  • Uplink will by default use the current directory instead of /var/lib/uplink, allowing for execution on platforms other than just linux.
  • Uplink file-downloader(#258) and stat collector(#259) bug fixes and improvements.

What's Changed

  • doc: update apps.md by @de-sh in #245
  • argonaut workflow Setup : by @argonautbot in #249
  • feat: force flush all streams before shutdown by @de-sh in #251
  • fix: use flush_period instead of buf_size for important streams by @de-sh in #255
  • Uplink should ignore save_current_action failures by @amokfa in #253
  • fix: stop download on action timeout, don't drop action on resend by @de-sh in #258
  • fix: glob error stopping stat collector by @de-sh in #259
  • feat: use current_dir instead of /var/lib by @de-sh in #260

Full Changelog: v2.5.0...v2.6.0

v2.5.0

09 Jun 10:03
Compare
Choose a tag to compare

Significant Changes

  • DeviceShadow collector that pushes onto device_shadow stream on regular intervals and updates device's network ping times. The following configuration can be added config.toml, to set the time interval between device shadow updation to be 30 seconds:
[device_shadow]
interval = 30 # time in seconds between each update

Note: the collector will push device_shadow with "latency": 10000(10s) if uplink encounters an error like network outage.

device_shadow JSON Array type as received by the platform

[{
  "sequence": Integer,
  "timestamp": Integer,
  "latency": Integer,
  "uplink_version": String
},
...]
  • Spawning multiple Tunshell sessions is now possible through parallel launch_shell actions.
  • OTAInstaller now expects an updater script/binary inside the tarball as the entry point.

What's Changed

New Contributors

Full Changelog: v2.4.0...v2.5.0

v2.4.0

22 May 10:49
beafb01
Compare
Choose a tag to compare

Significant Changes

  • Persisting actions on uplink shutdown allows users to temporarily halt uplink and restart it, without losing out on information with regards to the action that is in execution and hence allowing the user to bring back up both uplink and the external action handler, continuing action execution as if nothing had happened. This is possible because uplink stores action information along with all on-disk persistence files in the same directory, the diff for changes to support this is provided below:
+ persistence_path = "/path/to/dir"

[streams.stream_name]
topic = "/stream/topic"
buf_size = 100
- persistence = { path = "/path/to/dir", max_file_count = 3, max_file_size = 10485760 }
+ persistence = { max_file_count = 3, max_file_size = 10485760 }

What's Changed

  • refactor: use VecDeque for readability by @de-sh in #227
  • fix: update backup-deserializer to support uplink v2.3 by @de-sh in #233
  • feat: current action persistence on abrupt shutdowns by @de-sh in #216
  • feat: log processes by unit name in journalctl by @de-sh in #225

Full Changelog: v2.3.0...v2.4.0

v2.3.0

15 May 08:58
4f748fd
Compare
Choose a tag to compare

Significant Changes

  • Persistence is now configurable on a per-stream basis. We have moved from using a single on-disk persistence module for all streams, to now handling persistence on a per-stream basis, allowing the user to configure uplink to persist certain streams onto disk to ensure significant data is not lost due to network/system crash, while handling the rest with a volatile(in-memory) persistence that can only handle less severe network outages. The following is a diff of changes in config structure.
- [persistence]
- path = "/path/to/dir"
- max_file_count = 3
- max_file_size = 10485760 # bytes

[streams.stream_name]
topic = "/stream/topic"
buf_size = 100
+ persistence = { path = "/path/to/dir", max_file_count = 3, max_file_size = 10485760 }

[streams.another_stream]
topic = "/another/stream/topic"
buf_size = 100
+ persistence = { path = "/path/to/dir" } # uses default values for max_file_size and max_file_count

Recommendation: while it is possible to have different paths for each stream, users are recommended to use the same path for all streams, as uplink creates sub-folders per stream, and the path configured is only used as a directory to house sub-folders per stream, using the stream's name as it's own.

  • OTAInstaller is a new built-in action handler in uplink that can be configured to extract an already downloaded tarball and run an entry shell script(update.sh). diff for example changes that can be added to user's config for enabling this feature is provided below:
+ [ota_installer]
+ path = "/path/to/temp/ota" # temporary location where tar-balls can be extracted into for execution of `update.sh`
+ actions = ["install_firmware"] # actions that can trigger an installation
+ uplink_port = 5555 # pre-configured uplink port to which the shell script can connect to send further updates while executing
  • Configure network timeouts for ensuring timely delivery of messages and a failure response otherwise:
[mqtt]
+ network_timeout = 30 # seconds

What's Changed

  • feat: VerString choose from version names by @de-sh in #190
  • feat: implement OTAInstaller by @de-sh in #193
  • feat: use axum instead of rouille by @de-sh in #196
  • doc: update downloader comments by @de-sh in #197
  • wait for clients in action routes buffer by @de-sh in #192
  • fix: mandate content-length in downloader action's payload by @de-sh in #195
  • fix: don't remove files, improve downloader error by @de-sh in #198
  • fix: do not reset timeout on action responses by @de-sh in #191
  • feat: network_timeout in config by @de-sh in #201
  • fix: duplicate timestamp key in serialized JSON by @de-sh in #206
  • "fix: revert #206, more testing needed" by @amokfa in #210
  • feat: enable targetted termination by @de-sh in #211
  • doc: improve documentation in lib.rs and serializer.rs by @de-sh in #213
  • argonaut workflow Setup : by @argonautbot in #215
  • feat: serializer module code improvements by @de-sh in #214
  • fix: uplink logger success response, use bridge, stream config by @de-sh in #205
  • feat: tool to analyze backlog files in persistence by @de-sh in #208
  • feat: add error trace by @de-sh in #212
  • fix: optionalize installer by @de-sh in #220
  • feat: separate out loggers by @de-sh in #222
  • fix: clear current action only if it triggered error by @de-sh in #219
  • fix: tracing filter by @de-sh in #226
  • feat: per-stream compression and optional disk persistence by @tekjar in #231

Full Changelog: v2.1.0...v2.3.0

v2.3.0-expo

06 May 11:13
Compare
Choose a tag to compare
v2.3.0-expo Pre-release
Pre-release

What's Changed

  • feat: use axum instead of rouille by @de-sh in #196
  • doc: update downloader comments by @de-sh in #197
  • wait for clients in action routes buffer by @de-sh in #192
  • fix: mandate content-length in downloader action's payload by @de-sh in #195
  • fix: don't remove files, improve downloader error by @de-sh in #198
  • fix: do not reset timeout on action responses by @de-sh in #191
  • feat: network_timeout in config by @de-sh in #201
  • fix: duplicate timestamp key in serialized JSON by @de-sh in #206
  • "fix: revert #206, more testing needed" by @amokfa in #210
  • feat: enable targetted termination by @de-sh in #211
  • doc: improve documentation in lib.rs and serializer.rs by @de-sh in #213
  • argonaut workflow Setup : by @argonautbot in #215
  • feat: serializer module code improvements by @de-sh in #214
  • fix: uplink logger success response, use bridge, stream config by @de-sh in #205
  • feat: tool to analyze backlog files in persistence by @de-sh in #208
  • feat: add error trace by @de-sh in #212
  • fix: optionalize installer by @de-sh in #220
  • feat: separate out loggers by @de-sh in #222
  • fix: clear current action only if it triggered error by @de-sh in #219
  • feat: implement lz4 compression by @de-sh in #204
  • feat: allow configuring per-stream persistability by @de-sh in #207

Full Changelog: v2.2.0-rc...v2.3.0-expo

v2.3.0-rc

04 May 09:31
Compare
Choose a tag to compare
v2.3.0-rc Pre-release
Pre-release

What's Changed

  • feat: use axum instead of rouille by @de-sh in #196
  • doc: update downloader comments by @de-sh in #197
  • wait for clients in action routes buffer by @de-sh in #192
  • fix: mandate content-length in downloader action's payload by @de-sh in #195
  • fix: don't remove files, improve downloader error by @de-sh in #198
  • fix: do not reset timeout on action responses by @de-sh in #191
  • feat: network_timeout in config by @de-sh in #201
  • fix: duplicate timestamp key in serialized JSON by @de-sh in #206
  • "fix: revert #206, more testing needed" by @amokfa in #210
  • feat: enable targetted termination by @de-sh in #211
  • doc: improve documentation in lib.rs and serializer.rs by @de-sh in #213
  • argonaut workflow Setup : by @argonautbot in #215
  • feat: serializer module code improvements by @de-sh in #214
  • fix: uplink logger success response, use bridge, stream config by @de-sh in #205
  • feat: tool to analyze backlog files in persistence by @de-sh in #208
  • feat: add error trace by @de-sh in #212
  • fix: optionalize installer by @de-sh in #220
  • feat: trigger shutdown procedures on sigterm by @de-sh in #217
  • feat: separate out loggers by @de-sh in #222
  • feat: current action persistence on abrupt shutdowns in #216

Full Changelog: v2.2.0-rc...v2.3.0-rc

v2.2.0

13 Apr 11:24
Compare
Choose a tag to compare
  • fix: don't remove files, improve downloader error (#198)
  • fix: mandate content-length in downloader action's payload (#195)

Full Changelog: v2.1.0...v2.2.0

v2.2.0-rc

27 Mar 07:36
840bb55
Compare
Choose a tag to compare
v2.2.0-rc Pre-release
Pre-release

What's Changed

  • feat: VerString choose from version names by @de-sh in #190
  • feat: implement OTAInstaller by @de-sh in #193

Full Changelog: v2.1.0...v2.2.0-rc