Skip to content

v2.3.0

Choose a tag to compare

@de-sh de-sh released this 15 May 08:58
· 275 commits to main since this release
4f748fd

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