{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":162566748,"defaultBranch":"main","name":"grpc-swift","ownerLogin":"glbrntt","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2018-12-20T10:54:33.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5047671?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718198201.0","currentOid":""},"activityList":{"items":[{"before":"ea7ae20befb9502577a47663d2414eb3e0470283","after":"3be271cc371324fc9245acd1b40e3f35868afef0","ref":"refs/heads/wait-for-stream-to-be-ready","pushedAt":"2024-06-12T14:06:21.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into wait-for-stream-to-be-ready","shortMessageHtmlLink":"Merge branch 'main' into wait-for-stream-to-be-ready"}},{"before":null,"after":"ea7ae20befb9502577a47663d2414eb3e0470283","ref":"refs/heads/wait-for-stream-to-be-ready","pushedAt":"2024-06-12T13:16:41.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Make testConnectionDropWithOpenStreams more reliable\n\nMotivation:\n\n'testConnectionDropWithOpenStreams' occasionally fails by going into\nthe idle state rather than transient failure when the connection is\ndropped. This happens because the connection doesn't believe there to be\nany streams open. There is a race here between the stream being opened\nand NIO firing the stream opened event. If the connection is dropped\nbetween those two events then the test will fail.\n\nModifications:\n\n- Wait for the server to respond with metadata before dropping the\n connection\n\nResult:\n\nMore stability","shortMessageHtmlLink":"Make testConnectionDropWithOpenStreams more reliable"}},{"before":"d8ecfee162b917c4c7c999e55b5bb5a1984bfd09","after":null,"ref":"refs/heads/catch-invalid-paths","pushedAt":"2024-06-12T13:00:23.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"}},{"before":"f3162aed31b34194ed38bd595230d37f8f3f53db","after":"d8ecfee162b917c4c7c999e55b5bb5a1984bfd09","ref":"refs/heads/catch-invalid-paths","pushedAt":"2024-06-12T12:29:19.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into catch-invalid-paths","shortMessageHtmlLink":"Merge branch 'main' into catch-invalid-paths"}},{"before":"902726211d7f4ed240fd353bcf052f7c1c423cec","after":"f3162aed31b34194ed38bd595230d37f8f3f53db","ref":"refs/heads/catch-invalid-paths","pushedAt":"2024-06-12T11:57:39.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into catch-invalid-paths","shortMessageHtmlLink":"Merge branch 'main' into catch-invalid-paths"}},{"before":"07b152944ce097188fb9f185a62ff660ed5d9761","after":"0f584b41cd51a1e45ece56fa0ef048fc6483c4eb","ref":"refs/heads/retroactive","pushedAt":"2024-06-12T11:56:20.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into retroactive","shortMessageHtmlLink":"Merge branch 'main' into retroactive"}},{"before":"19dd9fd2d9f13d81202409e961b9cc2e379b861e","after":null,"ref":"refs/heads/editorconfig","pushedAt":"2024-06-11T15:53:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"}},{"before":"b25d7b3399bdf1d4ac445872b2da51a166669077","after":"19dd9fd2d9f13d81202409e961b9cc2e379b861e","ref":"refs/heads/editorconfig","pushedAt":"2024-06-11T15:14:51.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into editorconfig","shortMessageHtmlLink":"Merge branch 'main' into editorconfig"}},{"before":null,"after":"b25d7b3399bdf1d4ac445872b2da51a166669077","ref":"refs/heads/editorconfig","pushedAt":"2024-06-11T14:49:22.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add editorconfig\n\nMotivation:\n\nDifferent projects use different indentation settings. We can configure\nproject specific settings in '.editorconfig' which is supported in\nXcode 16 beta.\n\nModifications:\n\n- Add '.editorconfig' with settings for our project\n\nResult:\n\nLess friction when developing multiple projects with different editor\nsettings.","shortMessageHtmlLink":"Add editorconfig"}},{"before":"26b9f0967db5f338abe931b782baf4e4851ed01f","after":"1e9e2a53a321eae528cb990794a4df8f4d7494d9","ref":"refs/heads/swift-6-ci","pushedAt":"2024-06-11T12:32:44.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Switch 5.10 jammy to 5.10.1 noble","shortMessageHtmlLink":"Switch 5.10 jammy to 5.10.1 noble"}},{"before":"10e9d5db92947aaec4b60f2751cd4ced8ecdae7e","after":"26b9f0967db5f338abe931b782baf4e4851ed01f","ref":"refs/heads/swift-6-ci","pushedAt":"2024-06-11T12:30:50.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Switch nightly main and 6.0 from jammy to noble","shortMessageHtmlLink":"Switch nightly main and 6.0 from jammy to noble"}},{"before":null,"after":"10e9d5db92947aaec4b60f2751cd4ced8ecdae7e","ref":"refs/heads/swift-6-ci","pushedAt":"2024-06-11T12:25:12.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Add Swift 6 nightly CI","shortMessageHtmlLink":"Add Swift 6 nightly CI"}},{"before":"102ef6b1929008953c6544127954fdc866727895","after":"07b152944ce097188fb9f185a62ff660ed5d9761","ref":"refs/heads/retroactive","pushedAt":"2024-06-11T11:55:06.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Remove a few retroactive conformance warnings\n\nMotivation:\n\nSwift 6 warns when types retroactively conform to a protocol. There are\na few places where we do this, for example in testing where we add 'best\neffort' equatable conformance. These warnings can be suppressed by\nmarking the conformance as `@retroactive`.\n\nModifications:\n\n- Add `@retroactive` to a conformances in tests\n- Move conformance to `RemovableChannelHandler` to the core module the\n server stream handler\n\nResult:\n\nFewer warnings","shortMessageHtmlLink":"Remove a few retroactive conformance warnings"}},{"before":null,"after":"102ef6b1929008953c6544127954fdc866727895","ref":"refs/heads/retroactive","pushedAt":"2024-06-11T10:19:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Remove a few retroactive conformance warnings\n\nMotivation:\n\nSwift 6 warns when types retroactively conform to a protocol. There are\na few places where we do this, for example in testing where we add 'best\neffort' equatable conformance. These warnings can be suppressed by\nmarking the conformance as `@retroactive`.\n\nModifications:\n\n- Add `@retroactive` to a conformances in tests\n- Move conformance to `RemovableChannelHandler` to the core module the\n server stream handler\n\nResult:\n\nFewer warnings","shortMessageHtmlLink":"Remove a few retroactive conformance warnings"}},{"before":null,"after":"902726211d7f4ed240fd353bcf052f7c1c423cec","ref":"refs/heads/catch-invalid-paths","pushedAt":"2024-06-11T10:09:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Don't allow invalid paths\n\nMotivation:\n\nThe \":path\" pseudo header indicates which RPC is to be called. The\nformat for this is \"//\". The server currently allows\nthe leading prefix to be missing.\n\nModifications:\n\n- Require paths to have a leading prefix\n\nResult:\n\nBetter policing","shortMessageHtmlLink":"Don't allow invalid paths"}},{"before":"a305c77de18f72f0d315572936c5112493b87b10","after":"3906a7e96dbc6018a9909e686c1a0aca82a8a704","ref":"refs/heads/h2-transport-tests-service","pushedAt":"2024-06-11T09:54:52.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Generate","shortMessageHtmlLink":"Generate"}},{"before":null,"after":"a305c77de18f72f0d315572936c5112493b87b10","ref":"refs/heads/h2-transport-tests-service","pushedAt":"2024-06-11T09:54:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Generate","shortMessageHtmlLink":"Generate"}},{"before":"6659374993b8f2fcf52ecf49c1a00576c0b04661","after":null,"ref":"refs/heads/lb-pick-first","pushedAt":"2024-06-10T13:30:19.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"}},{"before":"860b1fc52339ff6852542536cba56e0172d11837","after":"e2918daf393b15d01c9f2c73a6f0b943f2443d0e","ref":"refs/heads/server-state-machine","pushedAt":"2024-06-10T13:29:49.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Fix a few invalid state transitions\n\nMotivation:\n\nThe server stream state machine has a couple of rough edges. Broadly\nspeaking there are three categories of issue:\n\n1. Mixing protocol errors with invalid state.\n2. Remaining open when the server closes.\n3. Not making a state transition.\n\nIn (1) an incorrectly implemented client could hit an assertion failure\nbecause the state was believed to be unreachable. This isn't right, we\nshould close the stream instead.\n\nFor (2) the RPC is considered done when the server sends the final\nstatus. In such situations any input from the client should be dropped\non the floor, it isn't necessarily invalid, but the server has no use\nfor it as the processing of the RPC has been completed.\n\nFor (3) this was missed a number of times when the server receives the\ninitial headers. To work around this the processing of headers was moved\nto be a member function of the substate which also returns the next\nstate the state machine should transition to. This forces the\nimplementer to think about state transitions as well as side effects.\n\nModifications:\n\n- Avoid invalid state in a few places\n- Move to client and server closed when the server sends a status\n\nResults:\n\nFewer bugs","shortMessageHtmlLink":"Fix a few invalid state transitions"}},{"before":"4c9d9ea61eb40c13e99cece3e8a6a2f76ba4b643","after":null,"ref":"refs/heads/flaky-idle-test","pushedAt":"2024-06-10T13:29:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"}},{"before":"257bce39e2239c23737fbae8c1e51700ace29edf","after":"4c9d9ea61eb40c13e99cece3e8a6a2f76ba4b643","ref":"refs/heads/flaky-idle-test","pushedAt":"2024-06-10T13:24:30.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into flaky-idle-test","shortMessageHtmlLink":"Merge branch 'main' into flaky-idle-test"}},{"before":null,"after":"257bce39e2239c23737fbae8c1e51700ace29edf","ref":"refs/heads/flaky-idle-test","pushedAt":"2024-06-10T08:23:01.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Start the idle timer when the connection is ready\n\nMotivation:\n\nSome of the idle tests are flaky because the idle timer races the\nconnection becoming ready which can lead to state transitions the tests\naren't expecting. The root of this is caused by the idle timer starting\non channel active instead of when the connection becomes ready.\n\nModification:\n\n- Only start the idle/keepalive timers when the connection becomes ready\n\nResult:\n\nMore reliable tests","shortMessageHtmlLink":"Start the idle timer when the connection is ready"}},{"before":"dcf52d29f954c890289cdf967e3cd72e2ac6b5c7","after":"860b1fc52339ff6852542536cba56e0172d11837","ref":"refs/heads/server-state-machine","pushedAt":"2024-06-07T16:37:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"fixup path","shortMessageHtmlLink":"fixup path"}},{"before":null,"after":"dcf52d29f954c890289cdf967e3cd72e2ac6b5c7","ref":"refs/heads/server-state-machine","pushedAt":"2024-06-07T16:26:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Fix a few invalid state transitions\n\nMotivation:\n\nThe server stream state machine has a couple of rough edges. Broadly\nspeaking there are two categories of issue:\n\n1. Mixing protocol errors with invalid state.\n2. Remaining open when the server closes.\n\nIn (1) an incorrectly implemented client could hit an assertion failure\nbecause the state was believed to be unreachable. This isn't right, we\nshould close the stream instead.\n\nFor (2) the RPC is considered done when the server sends the final\nstatus. In such situations any input from the client should be dropped\non the floor, it isn't necessarily invalid, but the server has no use\nfor it as the processing of the RPC has been completed.\n\nModifications:\n\n- Avoid invalid state in a few places\n- Move to client and server closed when the server sends a status\n\nResults:\n\nFewer bugs","shortMessageHtmlLink":"Fix a few invalid state transitions"}},{"before":"7edbcff3768ff4e22d7753394910e866362d06ec","after":"6659374993b8f2fcf52ecf49c1a00576c0b04661","ref":"refs/heads/lb-pick-first","pushedAt":"2024-06-07T16:18:49.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into lb-pick-first","shortMessageHtmlLink":"Merge branch 'main' into lb-pick-first"}},{"before":"a92d69f8e07a980a16e6392aa42c094e373adc26","after":"7edbcff3768ff4e22d7753394910e866362d06ec","ref":"refs/heads/lb-pick-first","pushedAt":"2024-06-07T16:16:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Handle GOAWAY","shortMessageHtmlLink":"Handle GOAWAY"}},{"before":"b4d9cd7aaeaf7631fc11c7cff2790879f8a404d1","after":"bd2467f582b847be9599f867703d07fdf242165b","ref":"refs/heads/h2-client-posix","pushedAt":"2024-06-07T14:06:23.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into h2-client-posix","shortMessageHtmlLink":"Merge branch 'main' into h2-client-posix"}},{"before":"352f304be37ed3838b658d007f7ac397c8d45c4c","after":"b4d9cd7aaeaf7631fc11c7cff2790879f8a404d1","ref":"refs/heads/h2-client-posix","pushedAt":"2024-06-07T12:05:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"format","shortMessageHtmlLink":"format"}},{"before":"35000cbf5cacbcd60af7a227506b1077461e5dba","after":"352f304be37ed3838b658d007f7ac397c8d45c4c","ref":"refs/heads/h2-client-posix","pushedAt":"2024-06-07T11:51:55.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Merge branch 'main' into h2-client-posix","shortMessageHtmlLink":"Merge branch 'main' into h2-client-posix"}},{"before":"3f8cabfbd51373eb7efdc11baab8e2eab439bd18","after":"35000cbf5cacbcd60af7a227506b1077461e5dba","ref":"refs/heads/h2-client-posix","pushedAt":"2024-06-07T11:51:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"glbrntt","name":"George Barnett","path":"/glbrntt","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5047671?s=80&v=4"},"commit":{"message":"Docs","shortMessageHtmlLink":"Docs"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEY2RkvgA","startCursor":null,"endCursor":null}},"title":"Activity ยท glbrntt/grpc-swift"}