Revocation DB Invalid

I keep having my revocation DB become invalid. I see the following in the logs:

Error: Error opening revocation database: revocation database: boltdb: invalid database
storj.io/storj/private/kvstore/boltdb.New:43
storj.io/storj/private/revocation.openDBBolt:52
storj.io/storj/private/revocation.OpenDB:35
storj.io/storj/private/revocation.OpenDBFromCfg:23
main.cmdRun:76
main.newRunCmd.func1:33
storj.io/common/process.cleanup.func1.4:402
storj.io/common/process.cleanup.func1:420
github.com/spf13/cobra.(*Command).execute:985
github.com/spf13/cobra.(*Command).ExecuteC:1117
github.com/spf13/cobra.(*Command).Execute:1041
storj.io/common/process.ExecWithCustomOptions:116
main.main:34
runtime.main:283

I’ve been running this node for a long time, but I’ve been seeing this over the last six months. The fix is to remove the revocations.db file and restart the node.

Thanks Brad.

Hello @bradkollmyer,
Welcome to the forum!

Do you mean this happens all the time? If yes, then after the what event?

That’s right.

This happens every time the node is rebooted! It’s running under Docker.

Then I would suggest to check and fix a disk, where it’s located.

It’s not the disk. It’s running CephFS. It’s a cluster of 900+ TB. I use it for a variety of other tasks with no issues.

Something changed a few months back. The node had been reliable for many years with this configuration. It never went down before. I checked my old emails and it seemed to start 02/2025.

It may indicate that something is changed with your Ceph cluster.

But network storage has never been supported anyway, it can work until it stops working, and it looks like you’ve reached that limit.
You may try to move this database to the local storage, it has an own parameter server.revocation-dburl, you may check the format:

bash

docker exec -it storagenode /app/bin/storagenode setup --help | grep "server.revocation-dburl"

PowerShell

docker exec -it storagenode /app/bin/storagenode setup --help | sls "server.revocation-dburl"

You may add it as a parameter to the config.yaml file or as a variable in a format STORJ_SERVER_REVOCATION_DBURL or as a command line option --server.revocation-dburl=bolt:///app/revocations.db to your docker run command after the image name.
If you use a docker-compose.yaml, then it would be in the command section:

    command:
      - --server.revocation-dburl=bolt:///app/revocations.db

of course it would disappear every time when you delete the container, so you may want to add a mapping to a local disk:

docker run ... \
  --mount type=bind,src=/usr/local/lib/storagenode/dbs,dst=/app/dbs \
...
storjlabs/storagenode:latest \
--server.revocation-dburl=bolt:///app/dbs/revocations.db

or an analogue for docker-compose.yaml:

    volumes:
      - type: bind
        source: /usr/local/lib/storagenode/dbs
        target: /app/dbs
    command:
      - --server.revocation-dburl=bolt:///app/dbs/revocations.db

That worked to fixed my problem.