Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Upgrade Guide 8.3.0 to 8.4.0

If you are upgrading from version 8.2.x you must upgrade to version 8.3.0 first!

Important Note

Backup Your Data Before Proceeding!

Acceptance Testing

Before upgrading your production instance we encourage you to exercise the upgrade scenario on your acceptance testing instance.

Update Deployment YAML Files

Just enter the following to update the deployment configuration:

helm template prod oci://registry.21analytics.ch/21analytics/twenty-one-travel-rule --version 0.4.x -f values.yaml -f secrets.yaml > quadlet/travel.yaml
podman quadlet install --replace ./quadlet

Restart 21 Travel Rule

A restart is required to apply the new deployment.

systemctl restart travel.service

Consolidate SeaweedFS Volumes (Optional)

NOTE: this applies to SeaweedFS users only!

Use this procedure to consolidate partially used volumes in the default (unnamed) collection and free volume slots for other collections.

Important: Only merge volumes from the same collection. Verify that the destination has enough free capacity for all data on the source volume.

1. Start a SeaweedFS shell

podman exec -it <seaweedfs-container> weed shell

2. Identify the source and destination volumes

List the current volumes:

volume.list

Volumes in the default collection have an empty Collection: field:

DataNode <data-node> ...
  ...
  volume Id:1, Size:..., Collection:, ...
  volume Id:2, Size:..., Collection:, ...
  volume Id:3, Size:..., Collection:, ...
  volume Id:4, Size:..., Collection:, ...

Choose:

  • a source volume to remove
  • a destination volume with enough free capacity
  • the DataNode hosting the source volume

The example below merges volume 4 into volume 1. The source volume is hosted on <data-node>.

3. Lock administration and mark the source read-only

lock
volume.mark -node=<data-node> -volumeId=4 -readonlyCanDelete

Mark only the source volume read-only.

The administrative lock does not block application or filer writes. -readonlyCanDelete prevents new data from being assigned to the source while still allowing cleanup.

4. Run the first merge

fs.mergeVolumes -fromVolumeId=4 -toVolumeId=1 -apply

Writes already in progress when the source became read-only may not yet have committed their filer metadata and can therefore be missed by this pass.

5. Wait for the safety window and merge again

Wait until the source volume has been read-only for at least 10 minutes. If the first merge took 10 minutes or longer, no additional wait is needed.

Then run the merge again:

fs.mergeVolumes -fromVolumeId=4 -toVolumeId=1 -apply

6. Check the remaining files

volume.fsck -volumeId=4 -cutoffTimeAgo=10m

Continue only if all remaining files are reported as orphaned:

dataNode:... volume:4 entries:4 orphan:4 100.00%
Total        entries:4 orphan:4 100.00%

The 10m cutoff is the safety window for in-flight writes to finish committing filer metadata. If you use a different cutoff, wait at least that long after marking the source read-only before performing the final merge and fsck.

If any referenced files remain:

  1. Do not delete anything.
  2. Run fs.mergeVolumes again.
  3. Repeat volume.fsck.
  4. Investigate if referenced files continue to remain.

7. Delete orphaned files

Once all remaining files are confirmed orphaned:

volume.fsck -volumeId=4 -cutoffTimeAgo=10m -reallyDeleteFromVolume

8. Compact the source volume

volume.vacuum -volumeId=4 -garbageThreshold=0

9. Verify that the source is empty

volume.list -volumeId=4

An empty volume should contain only the volume header:

Size:8
FileCount:0
DeleteCount:0

If the volume is not empty, do not delete it. Repeat the merge and fsck steps and investigate the remaining files.

10. Delete the empty volume and unlock

Delete the source volume from the same DataNode identified earlier:

volume.delete -node=<data-node> -volumeId=4
unlock

11. Verify the freed slot

volume.list

The topology should show an additional free volume slot, for example:

hdd(volume:3/5 active:3 free:2 remote:0)

Repeat the procedure for other partially used volumes where consolidation is appropriate.