Skip to content

Releases: bytebeamio/uplink

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

v2.1.0

23 Mar 12:16
Compare
Choose a tag to compare

Significant Changes

  • Configuration for uplink has changed a bit, most significantly the concept of an Action Route replaces named actions, i.e. an application must provide information about the actions it can consume as follows:
Action Route {
  name: Name of the action,
  timeout: Period in seconds from start of action execution, after which an uncompleted action can be deemed to have failed, i.e. timedout, default is 60 seconds.
}

Example diff of changes in config.toml

What's Changed

  • fix: action definition in sim config generator by @de-sh in #172
  • rename stats -> system_stats by @amokfa in #170
  • fix: launch loggerinstance by @amokfa in #173
  • fix: compile on mac by @amokfa in #174
  • feat: handle all demo actions with simulator by @de-sh in #176
  • fix: use proper log levels by @amokfa in #181
  • fix: clippy by @amokfa in #182
  • fix: processor stats stream name by @amokfa in #179
  • fix: update action timeout when responses are received by @amokfa in #184
  • fix: use process.cmd[0] if available instead of process.name by @amokfa in #183
  • feat: complete actions with no redirection by @de-sh in #178
  • fix: tunshell bugfix by @amokfa in #186
  • fix: log minimal stuff at info level by @amokfa in #185

Full Changelog: v2.0.0...v2.1.0

v2.1.0-rc

15 Mar 05:22
c3f24d6
Compare
Choose a tag to compare
v2.1.0-rc Pre-release
Pre-release

What's Changed

  • fix: action definition in sim config generator by @de-sh in #172
  • rename stats -> system_stats by @amokfa in #170
  • fix: launch loggerinstance by @amokfa in #173
  • fix: compile on mac by @amokfa in #174
  • feat: handle all demo actions with simulator by @de-sh in #176
  • fix: use proper log levels by @amokfa in #181
  • fix: clippy by @amokfa in #182
  • fix: processor stats stream name by @amokfa in #179
  • fix: update action timeout when responses are received by @amokfa in #184
  • fix: use process.cmd[0] if available instead of process.name by @amokfa in #183
  • feat: complete actions with no redirection by @de-sh in #178
  • fix: tunshell bugfix by @amokfa in #186
  • fix: log minimal stuff at info level by @amokfa in #185

Full Changelog: v2.0.0...v2.0.1-rc

v2.0.0

01 Mar 16:53
37d9221
Compare
Choose a tag to compare

What's Changed

  • feat: docs and cleanup by @bmcpt in #93
  • fix: set default values for persistence config if missing by @de-sh in #95
  • feat: add onfigurable blacklist to stream_metrics by @de-sh in #96
  • feat: global config to bypass uplink metrics collectors by @de-sh in #97
  • refactor: move bins, strict delinting policy, rm/update deps by @de-sh in #101
  • feat: detail missing file in error message by @de-sh in #102
  • Improve logs by @tekjar in #106
  • fix: tests broken by changes in FileDownloader by @de-sh in #126
  • feat: refactor StatCollector and Process with BridgeTx by @de-sh in #125
  • feat: rename _count fields by @de-sh in #128
  • fix: don't remove file before finishing read by @de-sh in #99
  • fix: use BridgeTx in simulator by @de-sh in #130
  • feat: multiple tcp ports, one per app re-design by @de-sh in #131
  • fix: proper use of configurations for process and downloader apps by @de-sh in #135
  • feat: allow user to config forwarding actions by @de-sh in #132
  • feat: use checksum to handle file corruption by @de-sh in #129
  • fix: simulator configs by @de-sh in #142
  • feat: nest config for mqtt client by @de-sh in #145
  • feat: uplink fleet simulation by @de-sh in #144
  • feat: allow reloading tracing filter over http by @de-sh in #136
  • fix: set Config.apis.enabled = false by default by @de-sh in #148
  • feat: improve simulator.sh cli messaging by @de-sh in #150
  • fix: default stream topics by @de-sh in #149
  • fix: remove hardcoded device json files by @de-sh in #151
  • fix: add step to download device auth file by @de-sh in #152
  • fix: store downloaded file with file_name by @de-sh in #153
  • feat: android ci by @amokfa in #159
  • fix: delete data at old location before downloading by @amokfa in #165
    • Combine journalctl and logcat config by @amokfa in #163
  • Document required log lines by @amokfa in #162
  • fix: ignore old file delete error by @amokfa in #166
  • feat: allow configuring per action timeouts by @de-sh in #156
  • feat: respond with uplink occupied failure by @de-sh in #168
  • fix: don't return action_rx for empty name list by @de-sh in #160

New Contributors

Full Changelog: v1.6.1...v2.0.0

v2.0.0-rc1

09 Feb 07:19
4b6eaaa
Compare
Choose a tag to compare
v2.0.0-rc1 Pre-release
Pre-release

What's Changed

  • feat: use checksum to handle file corruption by @de-sh in #129

Full Changelog: v2.0.0-rc...v2.0.0-rc1

v2.0.0-rc

06 Feb 08:42
0a0abde
Compare
Choose a tag to compare
v2.0.0-rc Pre-release
Pre-release

What's Changed

  • feat: docs and cleanup by @bmcpt in #93
  • fix: set default values for persistence config if missing by @de-sh in #95
  • feat: add onfigurable blacklist to stream_metrics by @de-sh in #96
  • feat: global config to bypass uplink metrics collectors by @de-sh in #97
  • refactor: move bins, strict delinting policy, rm/update deps by @de-sh in #101
  • feat: detail missing file in error message by @de-sh in #102
  • Improve logs by @tekjar in #106
  • fix: tests broken by changes in FileDownloader by @de-sh in #126
  • feat: refactor StatCollector and Process with BridgeTx by @de-sh in #125
  • feat: rename _count fields by @de-sh in #128
  • fix: don't remove file before finishing read by @de-sh in #99
  • fix: use BridgeTx in simulator by @de-sh in #130
  • feat: multiple tcp ports, one per app re-design by @de-sh in #131
  • fix: proper use of configurations for process and downloader apps by @de-sh in #135
  • feat: allow user to config forwarding actions by @de-sh in #132

Full Changelog: v1.6.1...v2.0.0-rc