Releases: bytebeamio/uplink
v2.14.1
Significant Changes
- Allow configuring default buffer size for backlog management in serializer, instead of using the default 10MB, decreases unnecessary RAM hogging.
# Configure uplink to only allocate 1KB of backlog buffer by default
default_buf_size = 1024
- Allow configuring max number of data streams that uplink can batch, instead of a hardcoded limit of 20, this allows users to be more in control of their on-device setup.
# Configure uplink to allow upto 100 data streams
max_stream_count = 100
NOTE: When using TOML to configure, keep these configs at the top of the file to avoid config mismatch.
What's Changed
- feat: write storage to human readable file by @de-sh in #352
- fix: configurable default backlog buffer size by @de-sh in #353
- test: integration to
tests/
, serializer withtokio::test
by @de-sh in #354 - refactor: separate out
DeviceConfig
by @de-sh in #356 - fix: allow configuring
max_stream_count
by @de-sh in #358
Full Changelog: v2.14.0...v2.14.1
v2.14.0
Significant Changes
- New http endpoint on uplink console allows user to figure out if upstream connection to broker is alive or closed.
# Configure uplink to expose console
[console]
enabled = true
port = 3333
# Poll status of uplink when not in network
$ curl -X GET http://localhost:3333/status
{"connected":false}⏎
# Poll status of uplink when not in network
$ curl -X GET http://localhost:3333/status
{"connected":true}⏎
What's Changed
- feat: endpoint for uplink connection status by @de-sh in #350
- feat: retry tcpapps bind after failure
Full Changelog: v2.13.0...v2.14.0
v2.13.0
Significant Changes
Actions can now be remotely cancelled on device by using a new "name": "cancel-action"
action. When configuring uplink on startup, if the field "cancellable"
is set to true
for an action route, uplink will forward "cancel-action"
actions to the handler on the configured route.
What's Changed
- feat: action cancellation by @de-sh in #339
- Simulator: increased timeout by @Inventor77 in #346
- fix: mark parallel actions as failed on restart by @de-sh in #349
- fix: push all actions no matter what by @de-sh in #347
- fix: action cancellation state loss by @de-sh in #351
New Contributors
- @Inventor77 made their first contribution in #346
Full Changelog: v2.12.2...v2.13.0
v2.12.2
v2.12.1
Brief: Bug fixes within downloader that ensures that uplink delivers on the minimum expectations for features such as continuation post restart and deletion of file on timeout.
What's Changed
- fix: delete downloaded file on action timeout by @de-sh in #340
- fix: duration in seconds missing fractions by @de-sh in #342
- fix: bad file descriptor by @de-sh in #343
- fix: downloader retry on DNS at startup by @de-sh in #344
Full Changelog: v2.12.0...v2.12.1
v2.12.0
Significant Changes
- DEPRECATED:
kind
field inAction
struct is deprecated as it was unused, applications will BREAK if they expect this field to be a part of the action JSON message. - uplink now forwards errors faced when it is forced to retry a download, this improves observability into the agent.
- Downloader now retries a download post restart if it was discontinued only because of an uplink shutdown.
What's Changed
- fix: need not retry HTTP status errors by @de-sh in #332
- deprecate kind field in actions by @de-sh in #331
- fix: forward error messages triggering retry by @de-sh in #333
- refactor: downloader by @de-sh in #336 and #338
- feat: restart download post reboot by @de-sh in #335
Full Changelog: v2.11.0...v2.12.0
v2.11.0
Significant Changes
batch_size
replaces thebuf_size
field name in the config file for configuring a stream's batch size limit, configs using thebuf_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
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 thedevice_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 theaction_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 anduplink_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
inSerializer
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
- @pranavlpin made their first contribution in #317
Full Changelog: v2.9.1...v2.10.0
2.10.0-rc
What's Changed
- feat: track disk space utilized by persistence by @de-sh in #312
- refactor: use
StreamConfig
inSerializer
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
- @pranavlpin made their first contribution in #317
Full Changelog: v2.9.1...2.10.0-rc
v2.9.1
This patch fixes ActionResponse.action_id
serialization and includes other maintenance updates.
What's Changed
- cpp example by @amokfa in #300
- Merge uplink android by @amokfa in #301
- fix:
ActionResponse.action_id
serialization by @de-sh in #302 - refactor: directly deserialize as
Duration
by @de-sh in #303
Full Changelog: v2.9.0...v2.9.1