Failed contracts might still be able to be used by the renter until the host reboots
The SiaStats hosts monitor creates once per week contracts with the us
library for hosts benchmarking. A few days ago, it created a contract with the host node02.eters.lv:9982 (pubkey: ed25519:999f43dd8e5aa69acc237f0601218e7dc698de044ab7362f0f57e16ace1f7290
). us
reported a successful contract creation, this is the output:
This is the actual file contract made by us
:
At the same time this contract was created, the logs of operator of the host (@reinisp at Discord) reported:
2019/06/03 19:05:40.225146 storageobligations.go:799: Consensus conflict on the origin transaction set, id 914c728217ed9c6e935ad03784f7e02706e5f082e585114788c87e07635fef68
I can't find this contract in the blockchain, what would mean the contract failed. However, my monitor was able to use this contract for uploading during the following 48 hours, succeeding the benchmarks with it. Reinisp rebooted his host after that time, and as a result, his host logs reports this error:
2019/06/05 13:06:04.704860 errors.go:151: internal error: error with 5.62.20.23:1630: incoming RPCReviseContract failed: failed RPCRecentRevision during RPCReviseContract: challenge failed: could not fetch 914c728217ed9c6e935ad03784f7e02706e5f082e585114788c87e07635fef68: storage obligation not found in database
and my us
client this other error: could not verify most recent contract revision: host did not accept revision request: bad signature from renter or no such contract
To me, this would indicate that the contract failed to be created, but persisted on the host until he rebooted it, what makes the "stalled" contracts to be removed from the database. What it is unexpected is that my renter was able to use during that time this contract, while it actually never existed. If this is the case, the host should report to the renter that the contract failed and not allowing it to be used. Another explanation of this behavior could exist, but I can't imagine it right now.
Renter: version 1.4.0 using the us
library (in particular the ushb
script)
Host: version 1.4.1-master
Please also refer to the conversation on the #hosting channel. Thanks in advance!