From 8753a9631ca9e649f4fc6dab70f96017041fed5b Mon Sep 17 00:00:00 2001 From: ID Bot Date: Sun, 22 Oct 2023 00:49:50 +0000 Subject: [PATCH] Script updating archive at 2023-10-22T00:49:50Z. [ci skip] --- archive.json | 436 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 434 insertions(+), 2 deletions(-) diff --git a/archive.json b/archive.json index e4a5d48..5af6311 100644 --- a/archive.json +++ b/archive.json @@ -1,6 +1,6 @@ { "magic": "E!vIA5L86J2I", - "timestamp": "2023-10-19T00:45:45.030278+00:00", + "timestamp": "2023-10-22T00:49:47.906679+00:00", "repo": "quicwg/reliable-stream-reset", "labels": [ { @@ -308,7 +308,7 @@ "labels": [], "body": "Currently, the draft allows for a sender to change the reliable offset for RESET_AT any number of times. I would argue:\r\n\r\n1. There is no scenario that needs this.\r\n2. This unnecessarily complicates the logic (more on this below).\r\n\r\nTherefore, we should remove this \"feature\".\r\n\r\n### Details\r\n\r\n(2) above requires the following extra logic:\r\n\r\n**Sender**\r\n\r\n- Additional API logic to allow for an application to change the value, but only to a smaller value (documentation as well).\r\n- Update the stream send-side state machine accordingly.\r\n- Have per-packet RESET_AT acknowledgement tracking to know exactly which reliable offset has been acknowledged, instead of per-stream \"ReliableResetAtAcked\" state. This is required because you must be certain the peer is in sync, in the scenario where a offset reduction was no acknowledged, but the original offset was. In this case, if the sender does not track state appropriately (and instead just has a per-stream state), it could incorrectly think the peer has everything it needs to clean up the stream and then stop sending/retansmitting the necessary data; resulting in a deadlock.\r\n\r\n**Receiver**\r\n\r\n- Allow the change (checking for current state), instead of just erroring out.\r\n- Update the stream recv-side state machine accordingly.\r\n- (Possibly) additional API indications/events.\r\n\r\n\r\n", "createdAt": "2023-10-16T17:24:54Z", - "updatedAt": "2023-10-18T13:23:33Z", + "updatedAt": "2023-10-19T01:48:32Z", "closedAt": null, "comments": [ { @@ -366,6 +366,13 @@ "body": "> The primary use case of this extension is in layered applications, where the different layers prefix a stream with an identifier that they wish to transmit reliably (e.g. the WebTransport session ID). Reducing the offset now gives a layer the option to back out from that commitment. This seems potentially useful, although I don't have a concrete use case for it (as in \"protocol X can only be realized if we have this feature\").\r\n\r\nI agree the point of this extension is supporting that ID prefix notion at the app layer. I also agree that there might be a case where they decide to abandon/reset the stream entirely, i.e. send a normal RESET_STREAM. But I can't imagine a realistic scenario where you would reduce to a non-zero value. \"Hey, please deliver our 4-byte offset. Wait! How about just 2 bytes now.\"\r\n\r\n> Allowing a reset to 0 seems inconsistent though: You're only allowing backing out when all the layers agree on that. This might not be the case if your application is layered on top of WebTransport (assuming that WebTransport is not going away either).\r\n\r\nIMO, having two ways to do the same thing just adds complexity. I'd argue that we could solve this \"problem\" by stating RESET_STREAM_AT with a value of 0 offset is invalid (or refactor the interpretation such that 0 is impossible), and simply require you use RESET_STREAM for this purpose always. This \"fixes\" the problem of allowing reduction partially (just to 0).\r\n\r\n> @nibanks It seems like you're more concerned about the write side (where implementation is optional) than the read side. Can you elaborate why that is?\r\n\r\nIt's unnecessary complexity. And while we might view it as optional right now, (1) a future spec possibly will take advantage of this in the future, making it a requirement for QUIC stacks that must support the scenario, but (2) more generally, our goal with MsQuic has always been to fully expose all possible spec behavior via our API.\r\n\r\nIn general, IMO, we should only add features/complexity to the protocol when we have an argument for it, and not have to make justifications in the reverse. And since there is no justification **for** reduction that anyone knows, I argue for its removal.", "createdAt": "2023-10-18T13:23:33Z", "updatedAt": "2023-10-18T13:23:33Z" + }, + { + "author": "kazuho", + "authorAssociation": "MEMBER", + "body": "@nibanks \r\n> IMO, having two ways to do the same thing just adds complexity. I'd argue that we could solve this \"problem\" by stating RESET_STREAM_AT with a value of 0 offset is invalid (or refactor the interpretation such that 0 is impossible), and simply require you use RESET_STREAM for this purpose always. This \"fixes\" the problem of allowing reduction partially (just to 0).\r\n\r\nTo me, special casing Reliable Size = 0 seems to be a complexity.\r\n\r\nRESET_STREAM_AT is a signal to reset the stream at certain offset. Once all bytes up to Reliable Size and RELIABLE_STREAM_AT frame are acknowledged, the sender discards the state. On the receiver side we have similar logic.\r\n\r\nThis logic works for any offset, including zero. So why do we need to disallow that?\r\n\r\nSpecifically, I might ask if there is a reason to disallow that at the protocol specification level to enforce all the QUIC stacks the same way, when endpoints that prefer one way can simply convert RESET_STREAM_AT(0) to RESET_STREAM internally (or vice versa).", + "createdAt": "2023-10-19T01:48:32Z", + "updatedAt": "2023-10-19T01:48:32Z" } ] }, @@ -2813,6 +2820,431 @@ "comments": [] } ] + }, + { + "number": 44, + "id": "PR_kwDOHuKM_s5dOuW5", + "title": "move the stream state section after the multiple frames section", + "url": "https://github.com/quicwg/reliable-stream-reset/pull/44", + "state": "MERGED", + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "assignees": [], + "labels": [], + "body": "No other changes than just moving the section.\r\n\r\nIt will be easier to understand the state transitions _after_ we have defined how you send multiple frames.", + "createdAt": "2023-10-19T06:46:31Z", + "updatedAt": "2023-10-19T08:16:07Z", + "baseRepository": "quicwg/reliable-stream-reset", + "baseRefName": "main", + "baseRefOid": "4ee95dae40c88e4beec9ee5df6c8628be3164150", + "headRepository": "quicwg/reliable-stream-reset", + "headRefName": "move-state-section", + "headRefOid": "8e9ee17fe7280766ed46510b72cb0cafeef11778", + "closedAt": "2023-10-19T08:16:07Z", + "mergedAt": "2023-10-19T08:16:07Z", + "mergedBy": "marten-seemann", + "mergeCommit": { + "oid": "21766fa092e6117f6f751b26dfdb3b75f69b3241" + }, + "comments": [], + "reviews": [ + { + "id": "PRR_kwDOHuKM_s5kjLoc", + "commit": { + "abbreviatedOid": "8e9ee17" + }, + "author": "kazuho", + "authorAssociation": "MEMBER", + "state": "APPROVED", + "body": "", + "createdAt": "2023-10-19T07:40:22Z", + "updatedAt": "2023-10-19T07:40:22Z", + "comments": [] + } + ] + }, + { + "number": 45, + "id": "PR_kwDOHuKM_s5dOyyx", + "title": "Marten's editorial pass", + "url": "https://github.com/quicwg/reliable-stream-reset/pull/45", + "state": "MERGED", + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "assignees": [], + "labels": [], + "body": "To be merged after #44.", + "createdAt": "2023-10-19T07:00:06Z", + "updatedAt": "2023-10-19T08:33:54Z", + "baseRepository": "quicwg/reliable-stream-reset", + "baseRefName": "main", + "baseRefOid": "21766fa092e6117f6f751b26dfdb3b75f69b3241", + "headRepository": "quicwg/reliable-stream-reset", + "headRefName": "marten-editorial-pass", + "headRefOid": "c732b462647f1c0a3b7f1dc417d0de288edec90f", + "closedAt": "2023-10-19T08:33:54Z", + "mergedAt": "2023-10-19T08:33:54Z", + "mergedBy": "marten-seemann", + "mergeCommit": { + "oid": "a28ae05aa241fa0b6e2467211937a8d3ae71b9d7" + }, + "comments": [], + "reviews": [ + { + "id": "PRR_kwDOHuKM_s5kjNOP", + "commit": { + "abbreviatedOid": "1130fb8" + }, + "author": "kazuho", + "authorAssociation": "MEMBER", + "state": "COMMENTED", + "body": "Thank you for the PR.\r\n\r\nThis reads much better.", + "createdAt": "2023-10-19T07:43:57Z", + "updatedAt": "2023-10-19T08:02:21Z", + "comments": [ + { + "originalPosition": 44, + "body": "We could interpret this sentence as if it is only about the timing. It is better to be explicit that the data may not be delivered to the application.\r\n\r\n```suggestion\r\napplication immediately, without providing any stream data it has received for that stream.\r\n```", + "createdAt": "2023-10-19T07:43:57Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 49, + "body": "```suggestion\r\nSome applications running on top of QUIC send identifiers at the beginning of\r\nthe streams in order to associate those streams with specific subcomponents of the\r\napplications. For example, WebTransport ({{!WEBTRANSPORT}}) uses a\r\n```\r\n\r\nMaybe it's just me, but starting in plural and ending in singular seems odd.", + "createdAt": "2023-10-19T07:46:40Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 56, + "body": "```suggestion\r\nAnother use case is relay data from an external data source. When a relay is\r\n```\r\nMy preference goes to retaining the term \"relay,\" as it implies forwarding the bytes unchanged compared to \"proxy.\"", + "createdAt": "2023-10-19T07:49:13Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 68, + "body": "\"guaranteed to be delivered reliably\" sounds verbose, maybe either \"guaranteed to be delivered\" or \"delivered reliably\"?", + "createdAt": "2023-10-19T07:50:22Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 96, + "body": "The sentence looks broken, I think the intent is to change it to \"A sender that wants to reset a stream but also deliver some bytes to the receiver sends a RESET_STREAM_AT frame...\"?\r\n\r\nWhile we could do that, I'm not sure people will be happy with a long subject? I kind of prefer the original.", + "createdAt": "2023-10-19T07:53:23Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 128, + "body": "```suggestion\r\nWhen sending multiple RESET_STREAM_AT or RESET_STREAM frames for the same\r\n```\r\nIt can be just one of the two, so \"or\"?", + "createdAt": "2023-10-19T07:54:44Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 172, + "body": "```suggestion\r\nSimilarly to the sender side, transition from \"Size Known\" to \"Data Recvd\" might\r\n```", + "createdAt": "2023-10-19T07:58:30Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 147, + "body": "FWIW, RFC 9000 uses \"sending side\" and \"receiving side\" when talking about stream states.\r\n\r\nI do not mind changing here if you feel strongly, but wonder if it's a matter of slight preference, maybe it'd be better to stick to the terms that RFC 9000 uses.", + "createdAt": "2023-10-19T07:59:57Z", + "updatedAt": "2023-10-19T08:02:22Z" + }, + { + "originalPosition": 183, + "body": "I'm not against removing this line, though I might ask removing \"only\" from the sentence above. Otherwise, people might complain, because this is going to be a different on the logic the sender side.", + "createdAt": "2023-10-19T08:01:58Z", + "updatedAt": "2023-10-19T08:02:22Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjd0l", + "commit": { + "abbreviatedOid": "1130fb8" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:19:03Z", + "updatedAt": "2023-10-19T08:19:03Z", + "comments": [ + { + "originalPosition": 49, + "body": "I'm not sure I like the suggestion. I think the original version is fine.", + "createdAt": "2023-10-19T08:19:03Z", + "updatedAt": "2023-10-19T08:19:03Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjenm", + "commit": { + "abbreviatedOid": "1130fb8" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:20:39Z", + "updatedAt": "2023-10-19T08:20:39Z", + "comments": [ + { + "originalPosition": 68, + "body": "Done.", + "createdAt": "2023-10-19T08:20:39Z", + "updatedAt": "2023-10-19T08:20:39Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjf3J", + "commit": { + "abbreviatedOid": "096b8c6" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:22:55Z", + "updatedAt": "2023-10-19T08:22:55Z", + "comments": [ + { + "originalPosition": 96, + "body": "It's 3 paragraphs starting with \"when\" though, which looks kind of weird. I'll fix the sentence.", + "createdAt": "2023-10-19T08:22:55Z", + "updatedAt": "2023-10-19T08:22:56Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjghc", + "commit": { + "abbreviatedOid": "f6fd2ea" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:24:13Z", + "updatedAt": "2023-10-19T08:24:13Z", + "comments": [ + { + "originalPosition": 44, + "body": "Applied.", + "createdAt": "2023-10-19T08:24:13Z", + "updatedAt": "2023-10-19T08:24:13Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjhEA", + "commit": { + "abbreviatedOid": "f6fd2ea" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:24:51Z", + "updatedAt": "2023-10-19T08:24:51Z", + "comments": [ + { + "originalPosition": 128, + "body": "Done.", + "createdAt": "2023-10-19T08:24:51Z", + "updatedAt": "2023-10-19T08:24:51Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjhPR", + "commit": { + "abbreviatedOid": "f6fd2ea" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:25:08Z", + "updatedAt": "2023-10-19T08:25:08Z", + "comments": [ + { + "originalPosition": 172, + "body": "Done.", + "createdAt": "2023-10-19T08:25:08Z", + "updatedAt": "2023-10-19T08:25:08Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjiKa", + "commit": { + "abbreviatedOid": "f6fd2ea" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:26:40Z", + "updatedAt": "2023-10-19T08:26:41Z", + "comments": [ + { + "originalPosition": 147, + "body": "Good point, I switched to \"sending\" and \"receiving\" everywhere.", + "createdAt": "2023-10-19T08:26:40Z", + "updatedAt": "2023-10-19T08:26:41Z" + } + ] + }, + { + "id": "PRR_kwDOHuKM_s5kjixu", + "commit": { + "abbreviatedOid": "f6fd2ea" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "COMMENTED", + "body": "", + "createdAt": "2023-10-19T08:27:20Z", + "updatedAt": "2023-10-19T08:27:21Z", + "comments": [ + { + "originalPosition": 183, + "body": "Fair point. I changed it to \"main differences\".", + "createdAt": "2023-10-19T08:27:21Z", + "updatedAt": "2023-10-19T08:27:21Z" + } + ] + } + ] + }, + { + "number": 46, + "id": "PR_kwDOHuKM_s5dP0zK", + "title": "Kazuho's yet another review", + "url": "https://github.com/quicwg/reliable-stream-reset/pull/46", + "state": "MERGED", + "author": "kazuho", + "authorAssociation": "MEMBER", + "assignees": [], + "labels": [], + "body": "WIP.", + "createdAt": "2023-10-19T09:39:24Z", + "updatedAt": "2023-10-19T09:43:34Z", + "baseRepository": "quicwg/reliable-stream-reset", + "baseRefName": "main", + "baseRefOid": "a28ae05aa241fa0b6e2467211937a8d3ae71b9d7", + "headRepository": "quicwg/reliable-stream-reset", + "headRefName": "kazuho-patch-9", + "headRefOid": "e70cb0feb96247d6843773169fbdab1318b526c6", + "closedAt": "2023-10-19T09:43:34Z", + "mergedAt": "2023-10-19T09:43:34Z", + "mergedBy": "marten-seemann", + "mergeCommit": { + "oid": "666c8035f39027d626f794d1b8da4db0d0f678a2" + }, + "comments": [], + "reviews": [ + { + "id": "PRR_kwDOHuKM_s5kkNju", + "commit": { + "abbreviatedOid": "e70cb0f" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "APPROVED", + "body": "", + "createdAt": "2023-10-19T09:43:03Z", + "updatedAt": "2023-10-19T09:43:03Z", + "comments": [] + } + ] + }, + { + "number": 47, + "id": "PR_kwDOHuKM_s5dP4ks", + "title": "nit in the abstract", + "url": "https://github.com/quicwg/reliable-stream-reset/pull/47", + "state": "MERGED", + "author": "kazuho", + "authorAssociation": "MEMBER", + "assignees": [], + "labels": [], + "body": "I missed this...", + "createdAt": "2023-10-19T09:48:22Z", + "updatedAt": "2023-10-19T09:53:01Z", + "baseRepository": "quicwg/reliable-stream-reset", + "baseRefName": "main", + "baseRefOid": "666c8035f39027d626f794d1b8da4db0d0f678a2", + "headRepository": "quicwg/reliable-stream-reset", + "headRefName": "kazuho-patch-10", + "headRefOid": "045755786e5c81def32c17b35aaf05a887b231bd", + "closedAt": "2023-10-19T09:53:00Z", + "mergedAt": "2023-10-19T09:53:00Z", + "mergedBy": "marten-seemann", + "mergeCommit": { + "oid": "170993690d13022c487084e16a55cf16abc1ef63" + }, + "comments": [], + "reviews": [ + { + "id": "PRR_kwDOHuKM_s5kkSaU", + "commit": { + "abbreviatedOid": "0457557" + }, + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "state": "APPROVED", + "body": "", + "createdAt": "2023-10-19T09:52:43Z", + "updatedAt": "2023-10-19T09:52:43Z", + "comments": [] + } + ] + }, + { + "number": 48, + "id": "PR_kwDOHuKM_s5dP4lS", + "title": "fix name of transport parameter in IANA considerations", + "url": "https://github.com/quicwg/reliable-stream-reset/pull/48", + "state": "MERGED", + "author": "marten-seemann", + "authorAssociation": "COLLABORATOR", + "assignees": [], + "labels": [], + "body": "", + "createdAt": "2023-10-19T09:48:24Z", + "updatedAt": "2023-10-19T09:53:14Z", + "baseRepository": "quicwg/reliable-stream-reset", + "baseRefName": "main", + "baseRefOid": "666c8035f39027d626f794d1b8da4db0d0f678a2", + "headRepository": "quicwg/reliable-stream-reset", + "headRefName": "fix-tp-name", + "headRefOid": "42ae03c276062924ca8a93674705a80d9e87036f", + "closedAt": "2023-10-19T09:53:13Z", + "mergedAt": "2023-10-19T09:53:13Z", + "mergedBy": "marten-seemann", + "mergeCommit": { + "oid": "aa3a0e6d3aecd7ead506ea99c6260909389ce462" + }, + "comments": [], + "reviews": [ + { + "id": "PRR_kwDOHuKM_s5kkRlW", + "commit": { + "abbreviatedOid": "42ae03c" + }, + "author": "kazuho", + "authorAssociation": "MEMBER", + "state": "APPROVED", + "body": "Nice catch!", + "createdAt": "2023-10-19T09:50:57Z", + "updatedAt": "2023-10-19T09:50:57Z", + "comments": [] + } + ] } ] } \ No newline at end of file