Releases: bytebeamio/uplink
Releases · bytebeamio/uplink
v2.7.0
Significant Changes
- Uplink will start with a TCP interface on port 5050 by default if the
tcpapps
field is not defined in theconfig.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
v2.6.0
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 ofbuf_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
Significant Changes
DeviceShadow
collector that pushes ontodevice_shadow
stream on regular intervals and updates device's network ping times. The following configuration can be addedconfig.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 anupdater
script/binary inside the tarball as the entry point.
What's Changed
- feat: Add scripts and examples for rpi by @sai-kiran-y in #237
- fix: Cleanup Code by @sai-kiran-y in #238
- set file perms by @amokfa in #240
- feat: collector to push ping latency updates on
device_shadow
stream by @de-sh in #236 - Generic installer by @amokfa in #241
- feat: parallelized actions run immediately by @de-sh in #239
- fix: bridge failure to shutdown on file permission denied by @de-sh in #243
New Contributors
- @sai-kiran-y made their first contribution in #237
Full Changelog: v2.4.0...v2.5.0
v2.4.0
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
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
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
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