diff --git a/src/_zkapauthorizer/_storage_server.py b/src/_zkapauthorizer/_storage_server.py index e17207a9dce75b8b0e102f3a5ac64cce5a742601..ecec20f9a83aed55d678b79e9ff0b4a1bc8ed225 100644 --- a/src/_zkapauthorizer/_storage_server.py +++ b/src/_zkapauthorizer/_storage_server.py @@ -76,6 +76,9 @@ from challenge_bypass_ristretto import ( SigningKey, ) +from twisted.internet.defer import ( + Deferred, +) from twisted.python.reflect import ( namedAny, ) @@ -83,6 +86,10 @@ from twisted.internet.interfaces import ( IReactorTime, ) +from eliot import ( + start_action, +) + from .foolscap import ( ShareStat, RIPrivacyPassAuthorizedStorageServer, @@ -318,9 +325,13 @@ class ZKAPAuthorizerStorageServer(Referenceable): return self._original.remote_advise_corrupt_share(*a, **kw) def remote_share_sizes(self, storage_index_or_slot, sharenums): - return dict( - get_share_sizes(self._original, storage_index_or_slot, sharenums) - ) + with start_action( + action_type=u"zkapauthorizer:storage-server:remote:share-sizes", + storage_index_or_slot=storage_index_or_slot, + ): + return dict( + get_share_sizes(self._original, storage_index_or_slot, sharenums) + ) def remote_stat_shares(self, storage_indexes_or_slots): return list( @@ -345,6 +356,29 @@ class ZKAPAuthorizerStorageServer(Referenceable): data in already-allocated storage. These cases may not be the same from the perspective of pass validation. """ + with start_action( + action_type=u"zkapauthorizer:storage-server:remote:slot-testv-and-readv-and-writev", + storage_index=storage_index, + ): + result = self._slot_testv_and_readv_and_writev( + passes, + storage_index, + secrets, + tw_vectors, + r_vector, + ) + if isinstance(result, Deferred): + raise TypeError("_slot_testv_and_readv_and_writev returned Deferred") + return result + + def _slot_testv_and_readv_and_writev( + self, + passes, + storage_index, + secrets, + tw_vectors, + r_vector, + ): # Only writes to shares without an active lease will result in a lease # renewal. renew_leases = False