Commit 3f610d5
authored
Remove polling for object creation and deletion in S3 and GCS. (#5688)
After uploading (or deleting) an object to S3 or GCS[^azure], we check
in a loop whether the uploaded object exists (or not), until we receive
a positive response. This was done purportedly to work around the
eventual consistency in the storage backend. However, there are some
problems with this:
* GCS, and many known S3 implementations (Amazon S3, [Cloudflare
R2](https://developers.cloudflare.com/r2/reference/consistency/), GCS'
S3 API,
[MinIO](minio/minio#11389 (comment)),
[Oracle
Cloud](https://docs.oracle.com/en-us/iaas/Content/Object/Concepts/objectstorageoverview.htm#features),
[Wasabi](https://docs.wasabi.com/docs/what-data-consistency-model-does-wasabi-employ),
[Ceph](https://openmetal.io/resources/blog/ceph-replication-and-consistency-model-explained/#consistency),
[Backblaze](https://www.backblaze.com/blog/design-thinking-b2-apis-the-hidden-costs-of-s3-compatibility/#:~:text=The%20B2%20architecture%20offers%20what%20one%20could%20consider%20%E2%80%9Cstrong%20consistency.%E2%80%9D))
are now strongly consistent, making this check add an unnecessary
roundtrip.
* [This
paragraph](https://www.allthingsdistributed.com/2021/04/s3-strong-consistency.html#:~:text=For%20S3%2C%20we,copies%20in%202006.)
makes me think that when Amazon S3 was eventually consistent, one client
might have observed that the object exists, but another might not.
Checking that the object is locally visible to the client that uploaded
it, is not very useful, given object storage's distributed nature.
* https://github.com/Netflix/s3mper was made to work around S3's
eventual consistency, but it relied on DynamoDB. I suspect it's not
possible in general to add strong consistency to an eventually
consistent interface, using only that interface.
[^azure]: Not to Azure since the new SDK rewrite.
---
TYPE: IMPROVEMENT
DESC: Reduced latency when uploading objects on S3 and GCS1 parent 735ba67 commit 3f610d5
4 files changed
+2
-145
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
394 | 394 | | |
395 | 395 | | |
396 | 396 | | |
397 | | - | |
398 | | - | |
399 | 397 | | |
400 | 398 | | |
401 | 399 | | |
| |||
744 | 742 | | |
745 | 743 | | |
746 | 744 | | |
747 | | - | |
748 | | - | |
749 | | - | |
750 | | - | |
751 | | - | |
752 | | - | |
753 | | - | |
754 | | - | |
755 | | - | |
756 | | - | |
757 | | - | |
758 | | - | |
759 | | - | |
760 | | - | |
761 | | - | |
762 | | - | |
763 | | - | |
764 | | - | |
765 | | - | |
766 | | - | |
767 | | - | |
768 | | - | |
769 | | - | |
770 | | - | |
771 | | - | |
772 | | - | |
773 | | - | |
774 | | - | |
775 | | - | |
776 | | - | |
777 | | - | |
778 | | - | |
779 | | - | |
780 | | - | |
781 | | - | |
782 | | - | |
783 | | - | |
| 745 | + | |
784 | 746 | | |
785 | 747 | | |
786 | 748 | | |
| |||
1195 | 1157 | | |
1196 | 1158 | | |
1197 | 1159 | | |
1198 | | - | |
1199 | | - | |
1200 | | - | |
1201 | | - | |
1202 | | - | |
1203 | 1160 | | |
1204 | 1161 | | |
1205 | | - | |
1206 | | - | |
1207 | | - | |
1208 | | - | |
1209 | | - | |
1210 | | - | |
1211 | | - | |
1212 | | - | |
1213 | | - | |
1214 | | - | |
1215 | 1162 | | |
1216 | 1163 | | |
1217 | 1164 | | |
| |||
1252 | 1199 | | |
1253 | 1200 | | |
1254 | 1201 | | |
1255 | | - | |
1256 | | - | |
1257 | 1202 | | |
1258 | 1203 | | |
1259 | 1204 | | |
| |||
1334 | 1279 | | |
1335 | 1280 | | |
1336 | 1281 | | |
1337 | | - | |
| 1282 | + | |
1338 | 1283 | | |
1339 | 1284 | | |
1340 | 1285 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
651 | 651 | | |
652 | 652 | | |
653 | 653 | | |
654 | | - | |
655 | | - | |
656 | | - | |
657 | | - | |
658 | | - | |
659 | | - | |
660 | | - | |
661 | | - | |
662 | | - | |
663 | | - | |
664 | | - | |
665 | | - | |
666 | | - | |
667 | | - | |
668 | | - | |
669 | | - | |
670 | | - | |
671 | | - | |
672 | | - | |
673 | | - | |
674 | | - | |
675 | | - | |
676 | 654 | | |
677 | 655 | | |
678 | 656 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
612 | 612 | | |
613 | 613 | | |
614 | 614 | | |
615 | | - | |
616 | | - | |
617 | | - | |
618 | 615 | | |
619 | 616 | | |
620 | 617 | | |
| |||
699 | 696 | | |
700 | 697 | | |
701 | 698 | | |
702 | | - | |
703 | | - | |
704 | | - | |
705 | 699 | | |
706 | 700 | | |
707 | 701 | | |
| |||
832 | 826 | | |
833 | 827 | | |
834 | 828 | | |
835 | | - | |
836 | | - | |
837 | 829 | | |
838 | 830 | | |
839 | 831 | | |
| |||
917 | 909 | | |
918 | 910 | | |
919 | 911 | | |
920 | | - | |
921 | | - | |
922 | 912 | | |
923 | 913 | | |
924 | 914 | | |
| |||
1567 | 1557 | | |
1568 | 1558 | | |
1569 | 1559 | | |
1570 | | - | |
1571 | | - | |
1572 | | - | |
1573 | 1560 | | |
1574 | 1561 | | |
1575 | 1562 | | |
| |||
1660 | 1647 | | |
1661 | 1648 | | |
1662 | 1649 | | |
1663 | | - | |
1664 | | - | |
1665 | | - | |
1666 | | - | |
1667 | | - | |
1668 | | - | |
1669 | | - | |
1670 | | - | |
1671 | | - | |
1672 | | - | |
1673 | | - | |
1674 | | - | |
1675 | | - | |
1676 | | - | |
1677 | | - | |
1678 | | - | |
1679 | | - | |
1680 | | - | |
1681 | | - | |
1682 | | - | |
1683 | | - | |
1684 | | - | |
1685 | | - | |
1686 | | - | |
1687 | | - | |
1688 | | - | |
1689 | | - | |
1690 | | - | |
1691 | | - | |
1692 | | - | |
1693 | | - | |
1694 | | - | |
1695 | | - | |
1696 | | - | |
1697 | | - | |
1698 | | - | |
1699 | | - | |
1700 | | - | |
1701 | | - | |
1702 | | - | |
1703 | | - | |
1704 | | - | |
1705 | 1650 | | |
1706 | 1651 | | |
1707 | 1652 | | |
| |||
1821 | 1766 | | |
1822 | 1767 | | |
1823 | 1768 | | |
1824 | | - | |
1825 | | - | |
1826 | | - | |
1827 | 1769 | | |
1828 | 1770 | | |
1829 | 1771 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1436 | 1436 | | |
1437 | 1437 | | |
1438 | 1438 | | |
1439 | | - | |
1440 | | - | |
1441 | | - | |
1442 | | - | |
1443 | | - | |
1444 | | - | |
1445 | | - | |
1446 | | - | |
1447 | 1439 | | |
1448 | 1440 | | |
1449 | 1441 | | |
| |||
0 commit comments