Linking a file into a directory sometimes fails with MorePassesRequired when it apparently should not
I can reliably provoke:
e03d6eaa-d22d-459b-aa13-981ad88143ee
└── zkapauthorizer:storage-client:call-with-passes/1 ⇒ started 2020-06-23 19:06:33Z ⧖ 0.233s
├── count: 0
├── zkapauthorizer:get-passes/2 2020-06-23 19:06:33Z
│ ├── count: 0
│ └── message: slot_testv_and_readv_and_writev Ymw/Uo/c5QRp6/cJxxKphg==
├── zkapauthorizer:reset-passes/3 2020-06-23 19:06:34Z
│ └── count: 0
└── zkapauthorizer:storage-client:call-with-passes/4 ⇒ failed 2020-06-23 19:06:34Z
├── exception: foolscap.tokens.RemoteException
└── reason: <RemoteException around '[CopiedFailure instance: Traceback from remote host -- Traceback (most recent call last):⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/foolscap/eventual.py", line 26, in _turn⏎
cb(*args, **kwargs)⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/foolscap/broker.py", line 579, in doNextCall⏎
d.addCallback(lambda res: self._doCall(delivery))⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/twisted/internet/defer.py", line 322, in addCallback⏎
callbackKeywords=kw)⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/twisted/internet/defer.py", lin⏎
⏎
-- TRACEBACK ELIDED --⏎
⏎
runCallbacks()⏎
--- <exception caught here> ---⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks⏎
current.result = callback(current.result, *args, **kw)⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/foolscap/broker.py", line 579, in <lambda>⏎
d.addCallback(lambda res: self._doCall(delivery))⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/foolscap/broker.py", line 614, in _doCall⏎
return obj.doRemoteCall(delivery.methodname, args, kwargs)⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/foolscap/referenceable.py", line 59, in doRemoteCall⏎
res = meth(*args, **kwargs)⏎
File "/nix/store/k321pdc9g0qa2xvj0h2jpr0w7hjsfqj2-python-2.7.17-env/lib/python2.7/site-packages/_zkapauthorizer/_storage_server.py", line 340, in remote_slot_testv_and_readv_and_writev⏎
raise MorePassesRequired(len(valid_passes), required_new_passes)⏎
_zkapauthorizer._storage_server.MorePassesRequired: MorePassedRequired(valid_count=0, required_count=1)⏎
]'>
but I'm not sure what the cause is. Additional Eliot logging about how the pass counts are computed would probably help.