982023a | Jenkins for Software Heritage | 27 March 2020, 06:13:14 UTC | New upstream version 0.0.182 | 27 March 2020, 06:13:14 UTC |
ce5d2bf | Antoine R. Dumont (@ardumont) | 26 March 2020, 13:36:45 UTC | storage*: Update origin_visit_update to make status parameter mandatory This actually aligns with the origin_visit model whose status is already mandatory. | 26 March 2020, 15:13:45 UTC |
40a7569 | Antoine R. Dumont (@ardumont) | 26 March 2020, 07:53:50 UTC | test: Adapt origin validation test according to latest model changes Origin model no longer allows to have a type. Related to f533f62bbf114cfcc29f7c72307c4dfbe99cf048 | 26 March 2020, 14:44:24 UTC |
0a22e72 | Valentin Lorentz | 26 March 2020, 12:04:01 UTC | Respec discovery_date as a Python datetime instead of an ISO string. For consistency with the rest of the API. | 26 March 2020, 12:04:13 UTC |
74fd15e | Valentin Lorentz | 26 March 2020, 09:45:56 UTC | origin_visit_add: Add missing db/cur argument to call to origin_get. | 26 March 2020, 10:07:58 UTC |
c99ec11 | Jenkins for Software Heritage | 25 March 2020, 09:03:41 UTC | New upstream version 0.0.181 | 25 March 2020, 09:03:41 UTC |
fd29fcb | Antoine R. Dumont (@ardumont) | 24 March 2020, 12:32:33 UTC | storage*: Hex encode content hashes in HashCollision exception Related to T2332#42793 | 24 March 2020, 17:40:48 UTC |
b7477e5 | Valentin Lorentz | 24 March 2020, 11:14:38 UTC | Add format of discovery_date in the metadata specification. It was not specified what the format should be. | 24 March 2020, 11:14:38 UTC |
92a87ea | Valentin Lorentz | 23 March 2020, 14:50:01 UTC | Store the value of token(partition_key) in skipped_content_by_* table, instead of three hashes. As was done for content_by_*. | 23 March 2020, 14:51:13 UTC |
a24ab3f | Valentin Lorentz | 10 March 2020, 12:51:15 UTC | Store the value of token(partition_key) in content_by_* table, instead of three hashes. That's a big win in terms of disk space, and shouldn't affect performance negatively. | 23 March 2020, 14:16:46 UTC |
a72370d | Jenkins for Software Heritage | 18 March 2020, 17:45:34 UTC | New upstream version 0.0.180 | 18 March 2020, 17:45:34 UTC |
456e15a | Nicolas Dandrimont | 18 March 2020, 17:10:36 UTC | Don't double-count added origins in origin_add origin_add_one already counts origins; this other send_metric would have us count added origins twice. | 18 March 2020, 17:10:36 UTC |
d99f08b | Nicolas Dandrimont | 18 March 2020, 17:07:53 UTC | Don't count origins len(url) times when calling origin_add_one I guess the `origins` variable name was carried over from a refactoring, but it doesn't match what db.origin_add actually returns. Overall this variable name made us overcount origins a little. | 18 March 2020, 17:08:32 UTC |
b259b70 | Jenkins for Software Heritage | 18 March 2020, 15:50:48 UTC | New upstream version 0.0.179 | 18 March 2020, 15:50:48 UTC |
209de5d | Nicolas Dandrimont | 18 March 2020, 14:36:01 UTC | Serialize objstorage and database writes in content_add Considering that the objstorage is idempotent, and that there's no rollback feature, intermixing both "transactions" has no concrete benefit. This avoids doing database transactions that are longer than needed. | 18 March 2020, 14:36:01 UTC |
aaa0e54 | Nicolas Dandrimont | 18 March 2020, 11:04:46 UTC | Don't nest transactions in content_add/skipped_content_add Seems like the cur/db arguments have been missed in one of the various refactorings, creating separate transactions for these function calls. | 18 March 2020, 11:04:46 UTC |
1dbb732 | Nicolas Dandrimont | 18 March 2020, 11:04:05 UTC | Don't create a transaction for content_get_partition It just calls out to another function which, itself, creates a transaction. | 18 March 2020, 11:04:05 UTC |
9b3735b | Antoine Lambert | 17 March 2020, 14:34:12 UTC | requirements-swh.txt: Use >= instead of == for swh-core version check This fixes installation of swh modules in virtualenv when executing "pip install $(./bin/pip-swh-packages)" in swh-environment. | 17 March 2020, 14:34:25 UTC |
0e68cbe | Jenkins for Software Heritage | 16 March 2020, 11:59:16 UTC | New upstream version 0.0.178 | 16 March 2020, 11:59:16 UTC |
da98f5f | Antoine R. Dumont (@ardumont) | 12 March 2020, 18:54:21 UTC | origin_visit_add: Adapt endpoint signature to return OriginVisit Prior to this commit, there was: - no signature in the method - discrepancy between checks on the different backend origin_visit_add endpoint is now typed ``` def origin_visit_add( self, origin_url: str, date: Union[str, datetime.datetime], type: str) -> OriginVisit: ``` This also: - renames appropriately the origin_url parameter (removing 1 FIXME) - align backend implementations' check which were different | 13 March 2020, 13:09:42 UTC |
0456cce | Antoine R. Dumont (@ardumont) | 11 March 2020, 16:34:53 UTC | origin_visit_upsert: Use OriginVisit object as input This aligns with other `_add` endpoints. Only the journal depends on this. Related to D2812#67298 | 12 March 2020, 18:05:26 UTC |
aa39be1 | David Douard | 10 March 2020, 15:44:07 UTC | storage/writer: refactor JournalWriter.content_add to send model objects to the journal writer, as it already does with other objet types (instead of dicts). | 10 March 2020, 15:44:07 UTC |
a97781d | David Douard | 10 March 2020, 15:42:49 UTC | storage/validate: small code formatting | 10 March 2020, 15:42:49 UTC |
5ab89b0 | Jenkins for Software Heritage | 10 March 2020, 10:48:10 UTC | New upstream version 0.0.177 | 10 March 2020, 10:48:10 UTC |
05a4fca | Antoine R. Dumont (@ardumont) | 06 March 2020, 12:58:51 UTC | storage: Identify and provide the collision hashes in exception This matches, what's done in other storage backends. There is no consistency for now though, storage backends provides as HashCollision exception parameters the content information as: - cassandra: (algo: str, hash_id: bytes, Content as cassandra Row) - in_memory: (algo: str, hash_id: bytes, Content as Tuple[str, bytes] - pgstorage: algo: Optional[str] Opening this diff to discuss how to properly land this. | 10 March 2020, 08:27:55 UTC |
88fe942 | Nicolas Dandrimont | 05 March 2020, 14:16:48 UTC | Guarantee the order of results for revision_get and release_get It's a bit silly, but we depend on it for some tests. | 09 March 2020, 15:53:34 UTC |
7ee3972 | Valentin Lorentz | 06 March 2020, 13:59:21 UTC | Mock calls to time.sleep in retry tests. It makes the tests faster. | 06 March 2020, 13:59:21 UTC |
6fe9de4 | Valentin Lorentz | 06 March 2020, 13:45:25 UTC | Fix retry tests. mock_memory.has_calls does not exist; so calling it returns a MagicMock. | 06 March 2020, 13:58:33 UTC |
3b8b718 | David Douard | 06 March 2020, 08:29:09 UTC | sql: do not attempt to create the plpgsql lang if already exists This is needed in case the pg user is not super user (but language already exists.) | 06 March 2020, 08:29:09 UTC |
8e41bcc | Nicolas Dandrimont | 02 March 2020, 14:18:02 UTC | Update requirement on swh.core for RPCClient method overrides | 02 March 2020, 14:18:02 UTC |
2b64be8 | Jenkins for Software Heritage | 28 February 2020, 15:21:25 UTC | New upstream version 0.0.176 | 28 February 2020, 15:21:25 UTC |
5222352 | Valentin Lorentz | 27 February 2020, 15:59:52 UTC | Use Content.hashes() instead of Content.to_dict() where it makes sense. .hashes() returns a subset of .to_dict(), so it was accidentally used instead. | 27 February 2020, 15:59:52 UTC |
d096542 | Valentin Lorentz | 27 February 2020, 15:58:00 UTC | Make the RPC client and objstorage helper fetch Content.data. This is needed when a lazy subclass of Content is used, eg. from swh.model.from_disk. | 27 February 2020, 15:58:00 UTC |
3996e5d | Valentin Lorentz | 27 February 2020, 15:56:06 UTC | Move ctime out of the validation proxy. It's not the right place to set the ctime (it should be on the server side). | 27 February 2020, 15:56:06 UTC |
caf51a0 | Valentin Lorentz | 27 February 2020, 15:04:08 UTC | Accept cassandra-driver >= 3.22. The bug that affected us in 3.21 is resolved ( https://datastax-oss.atlassian.net/browse/PYTHON-1205 ), so we can now use v3.22 to get wheels. | 27 February 2020, 15:04:08 UTC |
79e1f7c | Jenkins for Software Heritage | 20 February 2020, 13:18:32 UTC | New upstream version 0.0.175 | 20 February 2020, 13:18:32 UTC |
b093a5a | Antoine Lambert | 20 February 2020, 12:24:02 UTC | retry: Add support for tenacity < 5.0 This fixes swh-storage debian package build on buster as python3-tenacity version is 4.12. | 20 February 2020, 12:38:48 UTC |
a20779f | Jenkins for Software Heritage | 19 February 2020, 15:00:30 UTC | New upstream version 0.0.174 | 19 February 2020, 15:00:30 UTC |
7cf0864 | Valentin Lorentz | 14 February 2020, 16:26:09 UTC | Add support for (de)serializing swh-model in RPC calls. This allows running the validating proxy on the client side instead of the server side. | 18 February 2020, 13:22:33 UTC |
80befa5 | Valentin Lorentz | 12 February 2020, 15:49:01 UTC | Make storage proxies use swh-model objects instead of dicts. This means that instead of having the validation proxy right before the backend class, it must now be at the beginning of pipelines. | 18 February 2020, 12:45:46 UTC |
29b0948 | Valentin Lorentz | 12 February 2020, 15:18:29 UTC | Fix FilteringProxy to not drop skipped-contents with a missing sha1_git. Passes them all to the backend instead of silently dropping them all if any of them is not missing. | 18 February 2020, 12:45:22 UTC |
51b2016 | Valentin Lorentz | 12 February 2020, 15:08:10 UTC | Fix inconsistent behavior of skipped_content_missing across backends. Two fixes: * in-mem ignored None keys * cassandra yielded input dicts as-is instead of a dict with just the hashes | 14 February 2020, 16:49:05 UTC |
03c2a02 | Valentin Lorentz | 06 February 2020, 13:22:29 UTC | Re-raise StorageArgumentException through API calls. So clients will get a nice exception looking like the original one, instead of generic RemoteApiError. | 12 February 2020, 15:51:26 UTC |
b668651 | Jenkins for Software Heritage | 12 February 2020, 13:13:45 UTC | New upstream version 0.0.172 | 12 February 2020, 13:13:45 UTC |
652ecf0 | Antoine R. Dumont (@ardumont) | 07 February 2020, 01:44:43 UTC | storages: Refactor journal operations with a dedicated writer collab Prior to this commit, the code was triplicated across the storage backends. Now all storages use the same collaborator whose concern is writing to the storage. Could be a stepping stone to make that a proxy storage. | 11 February 2020, 14:40:36 UTC |
adcbf95 | Valentin Lorentz | 11 February 2020, 13:12:12 UTC | Fix RecursionError when storage proxies are deepcopied or unpickled. They both get attributes (eg. __setattr__) before setting any attribute, and don't call the constructor; so self.storage is not set when __getattr__ is called for the first times. | 11 February 2020, 13:12:12 UTC |
de7797d | Antoine R. Dumont (@ardumont) | 10 February 2020, 16:17:59 UTC | tests: Remove print statement | 10 February 2020, 16:18:33 UTC |
5b3c940 | Antoine R. Dumont (@ardumont) | 10 February 2020, 12:18:21 UTC | storages: Refactor objstorage operations with a dedicated collaborator Prior to this commit, the code was triplicated across the storage backends. Now all storages use the same collaborator whose concern is writing to the objstorage. | 10 February 2020, 12:38:29 UTC |
68ff23c | Valentin Lorentz | 07 February 2020, 15:35:20 UTC | Add a validation proxy for _add() methods. It converts input dictionaries into swh-model objects, which validates them and raises an appropriate error. This removes duplicated validation code that is currently present in all three storage backends. It also uses well-defined object types instead of loose dicts, which gives these _add() methods a more strict type. | 10 February 2020, 11:03:49 UTC |
6383637 | Valentin Lorentz | 06 February 2020, 12:26:47 UTC | Unify exception raised by invalid input to API endpoints. This is a first step toward not pickling exceptions. | 07 February 2020, 10:40:23 UTC |
be225df | Jenkins for Software Heritage | 06 February 2020, 14:07:35 UTC | New upstream version 0.0.171 | 06 February 2020, 14:07:35 UTC |
2b029b7 | Valentin Lorentz | 05 February 2020, 11:17:59 UTC | Split 'content_add' method into 'content_add' and 'skipped_content_add'. Respectively to add present content and skipped content. This simplifies the logic of both methods, and is a necessary step to typing / using swh-model objects everywhere, as contents have quite different attributes depending on whether they are present or missing. | 06 February 2020, 13:29:31 UTC |
93ea487 | Valentin Lorentz | 04 February 2020, 12:38:32 UTC | Increase Cassandra requests timeout to 1 second. 100ms worked fine so far, but we're starting to get some timeouts on the Azure test cluster. Multiplying the timeout by 10 should give us ample room to work with. | 04 February 2020, 12:38:32 UTC |
a66e16c | Jenkins for Software Heritage | 03 February 2020, 13:23:46 UTC | New upstream version 0.0.170 | 03 February 2020, 13:23:46 UTC |
b315f9d | Valentin Lorentz | 31 January 2020, 16:09:31 UTC | Tune Cassandra test config for lower test latency. | 03 February 2020, 12:31:28 UTC |
25941d5 | Valentin Lorentz | 03 February 2020, 11:25:49 UTC | Make tests reuse the same keyspace/schema instead of recreating it for each test. This makes tests run 16 times faster than https://forge.softwareheritage.org/D2612 (which is itself 3 times faster than this commit's parent) | 03 February 2020, 11:26:24 UTC |
eb155ad | Valentin Lorentz | 21 January 2020, 13:59:26 UTC | Add Cassandra backend. | 31 January 2020, 15:05:53 UTC |
523f2eb | Jenkins for Software Heritage | 30 January 2020, 13:26:21 UTC | New upstream version 0.0.169 | 30 January 2020, 13:26:21 UTC |
cf45ec6 | Antoine R. Dumont (@ardumont) | 30 January 2020, 11:22:16 UTC | retry: Add retry behavior on pipeline storage with flushing failure Currently, wrong "hash collisions" are happening a lot on ingestion [1] [2] [3] The last loading step (flush) is failing on most loaders (git, npm, etc...). This commits adds the retry behavior to the current pipeline storage deployed. Which should decrease the frequency of that error. The remaining hash collision which won't subside should be then real hash collisions. [1] https://sentry.softwareheritage.org/share/issue/102aace238fe4ba6b49bcc5531f7c2bf/ [2] https://sentry.softwareheritage.org/share/issue/8e8b48a1d94c465b8109e76311ecdbe7/ [3] https://sentry.softwareheritage.org/share/issue/d4f1208b7eec4b43b11e38494ff039cc/ | 30 January 2020, 11:22:16 UTC |
3e6d2bf | Jenkins for Software Heritage | 30 January 2020, 10:25:29 UTC | New upstream version 0.0.168 | 30 January 2020, 10:25:29 UTC |
1608fcd | Valentin Lorentz | 29 January 2020, 15:15:40 UTC | Allow deprecated endpoints to be missing from a backend class. | 29 January 2020, 15:50:10 UTC |
68702b5 | Stefano Zacchiroli | 29 January 2020, 13:24:09 UTC | CONTRIBUTORS: add Daniele Serafini | 29 January 2020, 13:24:09 UTC |
32d455b | Valentin Lorentz | 24 January 2020, 17:10:40 UTC | Rename in_memory.Storage to in_memory.InMemoryStorage. For consistency with the other class names. | 29 January 2020, 12:34:38 UTC |
d4fb270 | Valentin Lorentz | 24 January 2020, 16:49:42 UTC | Move Storage documentation and endpoint paths to a new StorageInterface class Documentation was duplicated between the in-mem and postgresql storage, and one of them regularly goes out of date. This deduplicates them both to a new class. This new class is also the one declaring the API paths, as it did not make sense to have this declaration on the postgresql storage. Last but not least, this commit adds a test that checks backend classes have all the functions, and they have exactly the same signature as the interface. This will catch stupid bugs before production, eg. if an argument does not have the same name in all classes. | 29 January 2020, 11:16:55 UTC |
1775edd | Valentin Lorentz | 27 January 2020, 16:37:50 UTC | in_memory: Fix content_get_metadata when there is no 'data' key. | 27 January 2020, 16:37:57 UTC |
0f51e8a | Valentin Lorentz | 24 January 2020, 13:41:08 UTC | Remove cur/db arguments from the in-mem storage. They shouldn't be there; bad copy-pasting. | 24 January 2020, 15:53:27 UTC |
1cd53c1 | Valentin Lorentz | 24 January 2020, 15:46:47 UTC | Implement content_update for the in-mem storage. | 24 January 2020, 15:47:10 UTC |
e62d6e4 | Jenkins for Software Heritage | 24 January 2020, 14:01:56 UTC | New upstream version 0.0.167 | 24 January 2020, 14:01:56 UTC |
c8389c2 | Antoine R. Dumont (@ardumont) | 24 January 2020, 13:54:26 UTC | 146: Fix typo | 24 January 2020, 13:54:26 UTC |
2ebcdf3 | Antoine R. Dumont (@ardumont) | 24 January 2020, 10:57:46 UTC | pgstorage: Empty temp tables instead of dropping them Due to our pattern of adding objects [1], vacuum is triggered regularly on pg_catalog.*, having an heavy impact on performance. This commit tries to avoid the dropping the temporary tables part, emptying them instead (they still are dropped at the end of the session but less often). This should decrease the bloat on pg_catalog.* tables. [1] - create temporary table - insert data from temporary table to production table with filtering - drop temporary table | 24 January 2020, 11:14:00 UTC |
74bb123 | Jenkins for Software Heritage | 24 January 2020, 09:00:10 UTC | New upstream version 0.0.166 | 24 January 2020, 09:00:10 UTC |
cc25810 | Daniele Serafini | 22 January 2020, 14:03:41 UTC | assert list doesn't have too many values | 22 January 2020, 14:24:08 UTC |
2ebce62 | Daniele Serafini | 22 January 2020, 13:28:38 UTC | test endpoint: content_missing (sha1_git), snapshot_missing | 22 January 2020, 14:24:08 UTC |
c40d327 | Daniele Serafini | 22 January 2020, 13:27:36 UTC | in memory changes | 22 January 2020, 14:24:08 UTC |
55ebd23 | Daniele Serafini | 22 January 2020, 11:29:07 UTC | storage: Add endpoint to get missing content (by sha1_git) and missing snapshot | 22 January 2020, 14:24:08 UTC |
cfee7b5 | Valentin Lorentz | 22 January 2020, 11:25:24 UTC | Remove redundant config checks in load_and_check_config. 1. There is no reason to force the server to serve only the 'local' backend anymore 2. Missing arguments will error when instantiating the backend class. | 22 January 2020, 11:25:24 UTC |
2454a78 | Antoine Lambert | 17 January 2020, 16:02:35 UTC | docs: Fix sphinx warnings Related to T2188 | 17 January 2020, 16:02:35 UTC |
2dc17cd | Valentin Lorentz | 17 January 2020, 13:49:26 UTC | Remove 'id' and 'object_id' from the output of object_find_by_sha1_git. 'id' is not used anymore, and 'object_id' never was. This commit slightly simplifies existing code, and will allow some deduplication in the upcoming Cassandra backend. | 17 January 2020, 14:10:56 UTC |
b5a5084 | Valentin Lorentz | 16 January 2020, 15:17:44 UTC | Make origin_visit_get_random return None instead of {} if there are no results. This is more consistent with other endpoints. | 17 January 2020, 14:10:36 UTC |
dba9e04 | Valentin Lorentz | 16 January 2020, 13:16:11 UTC | Rewrite test_content_get_partition_empty to not assume partitions are based on sha1. This is not true of the upcoming Cassandra backend. | 17 January 2020, 14:10:11 UTC |
e584655 | Valentin Lorentz | 16 January 2020, 13:13:43 UTC | Remove test_content_*_same_input, which check for behavior we do not want to guarantee. They check that content_add deduplicates with existing content/duplicated input. This is unneeded (the loaders don't send such data), so providing these guarantees unnecessarily complicates swh-storage code, especially the upcoming Cassandra backend. | 17 January 2020, 14:09:38 UTC |
079fa61 | Jenkins for Software Heritage | 17 January 2020, 13:09:38 UTC | New upstream version 0.0.165 | 17 January 2020, 13:09:38 UTC |
bf77f14 | Antoine R. Dumont (@ardumont) | 17 January 2020, 12:55:36 UTC | storage.retry: Fix objects loading when using generator parameters This will fix related retry error [1] [1] https://sentry.softwareheritage.org/share/issue/ddbbdd3c235b40ca826bf2c820989f14/ Related to cc29708564c35575f569e863f028a480a9905cf4 Related to D2543 | 17 January 2020, 12:55:36 UTC |
4738b2e | Jenkins for Software Heritage | 16 January 2020, 17:05:01 UTC | New upstream version 0.0.164 | 16 January 2020, 17:05:01 UTC |
cc29708 | Antoine Lambert | 16 January 2020, 16:16:09 UTC | storage: Fix objects loading when using generator parameters Some objects (directories, origins, releases, revisions) will not be added into the storage if they are provided as generator parameters to the *_add methods instead of lists. So ensure to transform generators into lists before processing the objects. | 16 January 2020, 16:53:22 UTC |
e362b9d | Jenkins for Software Heritage | 14 January 2020, 16:17:43 UTC | New upstream version 0.0.163 | 14 January 2020, 16:17:43 UTC |
8dcac2b | Antoine R. Dumont (@ardumont) | 14 January 2020, 12:40:56 UTC | retry: Implement content_add_metadata endpoint with retry policy | 14 January 2020, 12:45:11 UTC |
aa588c9 | Antoine R. Dumont (@ardumont) | 14 January 2020, 12:40:39 UTC | retry: Migrate to tenacity Which is a maintained fork of retry | 14 January 2020, 12:40:39 UTC |
4aa4d79 | Antoine R. Dumont (@ardumont) | 11 January 2020, 11:05:57 UTC | test_retry: Improve and align consistently assertion checks | 14 January 2020, 10:41:35 UTC |
2b7d770 | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:56:04 UTC | storage.retry: Implement snapshot_add with retry policy | 14 January 2020, 10:41:35 UTC |
df3f33f | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:47:57 UTC | storage.retry: Implement release_add with retry policy | 14 January 2020, 10:41:35 UTC |
54890f7 | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:44:20 UTC | storage.retry: Implement revision_add with retry policy | 14 January 2020, 10:41:35 UTC |
a8efa95 | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:38:48 UTC | storage.retry: Implement directory_add with retry policy | 14 January 2020, 10:41:34 UTC |
dddb6d9 | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:37:41 UTC | in_memory: Make directory_get_random return None when storage empty | 14 January 2020, 10:41:34 UTC |
2dd578c | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:25:31 UTC | storage.retry: Implement origin_visit_update with retry policy | 14 January 2020, 10:41:34 UTC |
32c460c | Antoine R. Dumont (@ardumont) | 11 January 2020, 10:05:13 UTC | storage.retry: Implement origin_metadata_add endpoint with retry policy | 14 January 2020, 10:41:34 UTC |
3cf7adb | Antoine R. Dumont (@ardumont) | 10 January 2020, 17:10:03 UTC | storage.retry: Implement metadata_provider_add endpoint with retry policy | 14 January 2020, 10:41:34 UTC |
08f2f38 | Antoine R. Dumont (@ardumont) | 10 January 2020, 15:48:11 UTC | storage.retry: Implement tool_add endpoint with retry policy | 14 January 2020, 10:41:34 UTC |
fe6440e | Antoine R. Dumont (@ardumont) | 10 January 2020, 15:37:24 UTC | storage.retry: Implement origin_visit_add endpoint with retry policy | 14 January 2020, 10:41:34 UTC |
351b977 | Antoine R. Dumont (@ardumont) | 10 January 2020, 14:59:52 UTC | storage.retry: Implement origin_add_one endpoint with retry policy | 14 January 2020, 10:41:34 UTC |