Error opening revocation database: revocation database: boltdb: input/output error

Hi there,

i tried to start a node on docker but I only get that error.
Files on dockerhost are located there:
/mnt/storage/storagenode
/mnt/storage/identity/storagenode
They belong to a normal user and got 755 permissions.

For setting up and starting I use this commands and execute with a normal user which is in the docker group. <> stands for sensitive data I removed.

docker run --rm -e SETUP=“true”
–mount type=bind,source=“/mnt/storage/identity/storagenode”,destination=/app/identity
–mount type=bind,source=“/mnt/storage/storagenode”,destination=/app/config
–name storagenode storjlabs/storagenode:latest

docker run -d --restart always --stop-timeout 300
-p 28967:28967/tcp
-p 28967:28967/udp
-p 127.0.0.1:14002:14002
-e WALLET=“<>”
-e EMAIL=“<>”
-e ADDRESS=“<>:28967”
-e STORAGE=“1.7TB”
–memory=800m
–log-opt max-size=50m
–log-opt max-file=10
–mount type=bind,source=/mnt/storage/identity/storagenode,destination=/app/identity
–mount type=bind,source=/mnt/storage/storagenode,destination=/app/config
–name storagenode storjlabs/storagenode:latest

Any ideas? It is a complely new node.

IO error is most often caused by bad media.

Post the log file up to that message. Paste it between pair of three backticks.

Required reading: Posting code or preformatted text - Using Discourse - Discourse Meta

Also, what is “normal user” and how does it differ from abnormal?

What OS is it? Where is the storage located? What media is it on? What filesystem?

I´m on a Raspi 4 with 2 sdds attached. I created a lvm over both sdds with ext4 and mounted it to /mnt/storage. Added to fstab ofc. The normal user should indicate that it is not the root user.

Here we go with the log:

2024-11-10 17:22:16,700 INFO Set uid to user 0 succeeded
2024-11-10 17:22:16,708 INFO RPC interface 'supervisor' initialized
2024-11-10 17:22:16,708 INFO supervisord started with pid 1
2024-11-10 17:22:17,712 INFO spawned: 'processes-exit-eventlistener' with pid 49
2024-11-10 17:22:17,717 INFO spawned: 'storagenode' with pid 50
2024-11-10 17:22:17,722 INFO spawned: 'storagenode-updater' with pid 51
2024-11-10T17:22:17Z	INFO	Configuration loaded	{"Process": "storagenode-updater", "Location": "/app/config/config.yaml"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "storage.allocated-bandwidth"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "operator.wallet-features"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "console.address"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "storage.allocated-disk-space"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "healthcheck.details"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "contact.external-address"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "healthcheck.enabled"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "server.address"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "operator.email"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "operator.wallet"}
2024-11-10T17:22:17Z	INFO	Invalid configuration file key	{"Process": "storagenode-updater", "Key": "server.private-address"}
2024-11-10T17:22:17Z	INFO	Anonymized tracing enabled	{"Process": "storagenode-updater"}
2024-11-10T17:22:17Z	INFO	Running on version	{"Process": "storagenode-updater", "Service": "storagenode-updater", "Version": "v1.115.5"}
2024-11-10T17:22:17Z	INFO	Downloading versions.	{"Process": "storagenode-updater", "Server Address": "https://version.storj.io"}
2024-11-10T17:22:17Z	INFO	Configuration loaded	{"Process": "storagenode", "Location": "/app/config/config.yaml"}
2024-11-10T17:22:17Z	INFO	Anonymized tracing enabled	{"Process": "storagenode"}
2024-11-10T17:22:17Z	INFO	Operator email	{"Process": "storagenode", "Address": "<>"}
2024-11-10T17:22:17Z	INFO	Operator wallet	{"Process": "storagenode", "Address": "<>"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "info"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "bandwidth"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "orders"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "piece_expiration"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "pieceinfo"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "piece_spaced_used"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "reputation"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "storage_usage"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "used_serial"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "satellites"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "notifications"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "heldamount"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "pricing"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "secret"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "garbage_collection_filewalker_progress"}
2024-11-10T17:22:17Z	INFO	db	database does not exist	{"Process": "storagenode", "database": "used_space_per_prefix"}

Part 2 because of too much “Links”…

2024-11-10T17:22:17Z	ERROR	failure during run	{"Process": "storagenode", "error": "Error opening revocation database: revocation database: boltdb: input/output error\n\tstorj.io/storj/private/kvstore/boltdb.New:46\n\tstorj.io/storj/private/revocation.openDBBolt:52\n\tstorj.io/storj/private/revocation.OpenDB:35\n\tstorj.io/storj/private/revocation.OpenDBFromCfg:23\n\tmain.cmdRun:76\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.4:392\n\tstorj.io/common/process.cleanup.func1:410\n\tgithub.com/spf13/cobra.(*Command).execute:983\n\tgithub.com/spf13/cobra.(*Command).ExecuteC:1115\n\tgithub.com/spf13/cobra.(*Command).Execute:1039\n\tstorj.io/common/process.ExecWithCustomOptions:112\n\tmain.main:34\n\truntime.main:271", "errorVerbose": "Error opening revocation database: revocation database: boltdb: input/output error\n\tstorj.io/storj/private/kvstore/boltdb.New:46\n\tstorj.io/storj/private/revocation.openDBBolt:52\n\tstorj.io/storj/private/revocation.OpenDB:35\n\tstorj.io/storj/private/revocation.OpenDBFromCfg:23\n\tmain.cmdRun:76\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.4:392\n\tstorj.io/common/process.cleanup.func1:410\n\tgithub.com/spf13/cobra.(*Command).execute:983\n\tgithub.com/spf13/cobra.(*Command).ExecuteC:1115\n\tgithub.com/spf13/cobra.(*Command).Execute:1039\n\tstorj.io/common/process.ExecWithCustomOptions:112\n\tmain.main:34\n\truntime.main:271\n\tmain.cmdRun:78\n\tmain.newRunCmd.func1:33\n\tstorj.io/common/process.cleanup.func1.4:392\n\tstorj.io/common/process.cleanup.func1:410\n\tgithub.com/spf13/cobra.(*Command).execute:983\n\tgithub.com/spf13/cobra.(*Command).ExecuteC:1115\n\tgithub.com/spf13/cobra.(*Command).Execute:1039\n\tstorj.io/common/process.ExecWithCustomOptions:112\n\tmain.main:34\n\truntime.main:271"}

Part 3:

Error: Error opening revocation database: revocation database: boltdb: input/output error
	storj/storj/private/kvstore/boltdb.New:46
	storj/storj/private/revocation.openDBBolt:52
	storj/storj/private/revocation.OpenDB:35
	storj./storj/private/revocation.OpenDBFromCfg:23
	main.cmdRun:76
	main.newRunCmd.func1:33
	storj/common/process.cleanup.func1.4:392
	storj/common/process.cleanup.func1:410
	github/spf13/cobra.(*Command).execute:983
	github/spf13/cobra.(*Command).ExecuteC:1115
	github/spf13/cobra.(*Command).Execute:1039
	storj/common/process.ExecWithCustomOptions:112
	main.main:34
	runtime.main:271
2024-11-10 17:22:17,849 WARN exited: storagenode (exit status 1; not expected)

Wrong backticks. Have you not noticed they did not work in the preview while typing the post?

Attention to details is important.

You said non-root user, but what is this then?

  1. Check that the filesystem where databases are is writable by the user that actually runs the node, from within a container: open shell there and check
  2. On raspberrry pi 4 you need to disable UAS or connect USB drives to black USB ports.
  3. What OS is your pi running? Is SELinux or AppArmor enabled?
  4. Tangential comment: I would not use docker on a resource constrained system. Consider switching to podman and run them rootless with systemd
1 Like

Sorry for wrong backticks.

UAS did the trick.

But now the node stays offline. Perhaps it takes some time.

No, it shall be online immediately. Check the logs, check your port forwarding settings, check your DDNS, check if you have public IP — some internet providers use carrier grade NAT to conserve addresses

Ok, then I have to check.
Pi is directly behind a FritzBox.
Port is opened for udp and tcp.
I use the ddns service provided by fritz itself. This is working as a wireguard server is running several month.

processes are running, only errors like this occuring

2024-11-10T20:36:06Z	ERROR	contact:service	ping satellite failed 	{"Process": "storagenode", "Satellite ID": "12L9ZFwhzVpuEKMUNUqkaTLGzwY9G24tbiigLiXpmZWKwmcNDDs", "attempts": 1, "error": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: tls peer certificate verification: not signed by any CA in the whitelist: CA cert", "errorVerbose": "ping satellite: failed to ping storage node, your node indicated error code: 0, rpc: tcp connector failed: rpc: tls peer certificate verification: not signed by any CA in the whitelist: CA cert\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatelliteOnce:209\n\tstorj.io/storj/storagenode/contact.(*Service).pingSatellite:157\n\tstorj.io/storj/storagenode/contact.(*Chore).updateCycles.func1:87\n\tstorj.io/common/sync2.(*Cycle).Run:102\n\tstorj.io/common/sync2.(*Cycle).Start.func1:77\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:78"}

Did you follow the setup instructions completely? It seems your identity is not signed.

I created it on another host and moved it to the raspi.
I´ll check

Here is the relevant topic:

1 Like

I re-idented myself. I thought I did it already.
Now its working. Thank you very much!

1 Like