{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":219840948,"defaultBranch":"main","name":"servicetalk","ownerLogin":"idelpivnitskiy","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2019-11-05T20:08:27.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3968288?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1724350482.0","currentOid":""},"activityList":{"items":[{"before":"d37929fd4f0155f64e2578b536963205c0baa351","after":null,"ref":"refs/heads/locks","pushedAt":"2024-08-22T18:14:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"298e7bd2b6d1ebb83563c0220f07ad51579a8212","after":"d37929fd4f0155f64e2578b536963205c0baa351","ref":"refs/heads/locks","pushedAt":"2024-08-22T16:44:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"fix checkstyle","shortMessageHtmlLink":"fix checkstyle"}},{"before":"8646bfeb7556386cc74ba10cee961e315a3946b1","after":"298e7bd2b6d1ebb83563c0220f07ad51579a8212","ref":"refs/heads/locks","pushedAt":"2024-08-22T02:13:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Update build.gradle","shortMessageHtmlLink":"Update build.gradle"}},{"before":"499d9bd4eec2bd0f472c776966ea7484fb4d2646","after":"8646bfeb7556386cc74ba10cee961e315a3946b1","ref":"refs/heads/locks","pushedAt":"2024-08-22T02:09:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"re-generate lockfiles","shortMessageHtmlLink":"re-generate lockfiles"}},{"before":"81c83a210ec7530f8e023a12f78609018363f0a7","after":null,"ref":"refs/heads/cpw","pushedAt":"2024-08-21T22:45:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"ca099b70896305b1b7b381c18c95a9837146236e","after":null,"ref":"refs/heads/try-catch","pushedAt":"2024-08-21T16:50:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"f80a1f4b5f73eb9e5921cc18ec94f5a6a705d923","after":null,"ref":"refs/heads/repeat","pushedAt":"2024-08-21T15:49:27.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"d0c84ca321e63e55c7de513f53b8433ac7d184e1","after":"ca099b70896305b1b7b381c18c95a9837146236e","ref":"refs/heads/try-catch","pushedAt":"2024-08-20T20:38:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"TcpServerBinder: close `Channel` if future completes before cancel","shortMessageHtmlLink":"TcpServerBinder: close Channel if future completes before cancel"}},{"before":null,"after":"81c83a210ec7530f8e023a12f78609018363f0a7","ref":"refs/heads/cpw","pushedAt":"2024-08-20T15:33:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"`ConnectablePayloadWriter`: avoid static exception that may leak memory\n\nMotivation:\n\n`ConnectablePayloadWriter` uses a static `IOException` instance as a\nstate and can propagate it to `Subscriber`. This opens a possibility for\na memory leak if `Subscriber` or intermediate operators attach a\nsuppressed exception to this static instance.\n\nModifications:\n- Create `StacklessCancelledIOException` and always use a new instance\nin case of cancellation;\n- Keep `cancel()` noop if `outer.closed != null`;\n\nResult:\n\n`ConnectablePayloadWriter` can not leak memory via static exception\ninstance.","shortMessageHtmlLink":"ConnectablePayloadWriter: avoid static exception that may leak memory"}},{"before":null,"after":"d0c84ca321e63e55c7de513f53b8433ac7d184e1","ref":"refs/heads/try-catch","pushedAt":"2024-08-20T15:24:39.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Subscribable sources: try-catch `onSubscribe` and cleanup state if any\n\nMotivation:\n\nAll original sources that implement `handleSubscribe` method should\nprotect from a buggy `Subscriber` that may unexpectedly throw from\n`onSubscribe`. If they have any state or resource, it should be cleaned\nup.\n\nModifications:\n- Find all `Publisher`/`Single`/`Completable` that implement\n`handleSubscribe` and use `handleExceptionFromOnSubscribe` utility;\n\nThe following sources clean up their state on exception:\n- `FromInputStreamPublisher` closes `InputStream`;\n- `SpliceFlatStreamToMetaSingle` cancels upstream `Subscription`;\n- `TcpConnector` signals `ConnectionObserver.connectionClosed(t)`;\n- `TcpServerBinder` cancels bind `Future`;\n- `NettyChannelPublisher` registers `fatalError` and closes `Channel`;\n- `DefaultNettyConnection`, `ChannelInitSingle`,\n`H2ClientParentConnectionContext`, `H2ServerParentConnectionContext`\nclose `Channel`;\n\nResults:\n\n1. Best effort to propagate exception via reactive flow.\n2. Cleaning up resources.","shortMessageHtmlLink":"Subscribable sources: try-catch onSubscribe and cleanup state if any"}},{"before":null,"after":"f80a1f4b5f73eb9e5921cc18ec94f5a6a705d923","ref":"refs/heads/repeat","pushedAt":"2024-08-20T15:05:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"`Single.repeat`: use `TerminateRepeatException` as a terminal marker\n\nMotivation:\n\nCurrently, `RepeatWhenSingle` uses its own static `END_REPEAT_EXCEPTION`\nobject as an end marker. That static exception does not discard\nsuppressed exceptions. If under any circumcises it unintentionally\nleaks, it may cause a memory leak if some path adds suppressed\nexceptions to it. Also, it's inconsistent with `RepeatStrategies`.\n\nModifications:\n\n- Use `RepeatStrategies.TerminateRepeatException` instead that discards\nsuppressed exceptions and doesn't write stacktrace.\n- Cache failed `Completable` with `TerminateRepeatException` instance\ninstead of allocating a new one on every repeat check.\n\nResult:\n\n1. Avoids static exception instance that may attach suppressed\nexceptions.\n2. Consistency between all repeat operators and strategies.","shortMessageHtmlLink":"Single.repeat: use TerminateRepeatException as a terminal marker"}},{"before":"367d0695e37f41d4dace80702ce2dc8a124065a3","after":null,"ref":"refs/heads/TransportConfig","pushedAt":"2024-08-14T22:56:42.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"d0edda2ad622354d5b2d59840d2f292837ed2ab3","after":null,"ref":"refs/heads/split-fix","pushedAt":"2024-08-14T15:43:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"c810fdcc671ee0d42607b3adefd8d6081db32240","after":"d0edda2ad622354d5b2d59840d2f292837ed2ab3","ref":"refs/heads/split-fix","pushedAt":"2024-08-14T06:33:54.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Enable JavaNetSoTimeoutHttpConnectionFilterTest","shortMessageHtmlLink":"Enable JavaNetSoTimeoutHttpConnectionFilterTest"}},{"before":"a2bbed3dba1a7c768fe17a1241c72dcb1d92b9e6","after":"367d0695e37f41d4dace80702ce2dc8a124065a3","ref":"refs/heads/TransportConfig","pushedAt":"2024-08-13T18:26:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Update servicetalk-http-netty/src/main/java/io/servicetalk/http/netty/DefaultHttpServerBuilder.java","shortMessageHtmlLink":"Update servicetalk-http-netty/src/main/java/io/servicetalk/http/netty…"}},{"before":"24fc01adeb31a687d9ce0d3ea354ec665af1743a","after":null,"ref":"refs/heads/CancellationException","pushedAt":"2024-08-13T18:03:40.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"f3f3cf9d09237d18dd58964c4a71a9919d4d68d1","after":"24fc01adeb31a687d9ce0d3ea354ec665af1743a","ref":"refs/heads/CancellationException","pushedAt":"2024-08-12T18:03:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Don't use StacklessCancellationException in BeforeFinallyHttpOperator","shortMessageHtmlLink":"Don't use StacklessCancellationException in BeforeFinallyHttpOperator"}},{"before":"3ddda7bfc2349f6a9262e8af2769268071b8d3dd","after":"c810fdcc671ee0d42607b3adefd8d6081db32240","ref":"refs/heads/split-fix","pushedAt":"2024-08-12T17:59:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Capture full stack trace when something subscribes to payload after cancel","shortMessageHtmlLink":"Capture full stack trace when something subscribes to payload after c…"}},{"before":"dc47db075b6f3ed05b40ac404ca1b7fdcba6f4d3","after":"3ddda7bfc2349f6a9262e8af2769268071b8d3dd","ref":"refs/heads/split-fix","pushedAt":"2024-08-12T17:36:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Use different stack trace for CancellationException","shortMessageHtmlLink":"Use different stack trace for CancellationException"}},{"before":null,"after":"a2bbed3dba1a7c768fe17a1241c72dcb1d92b9e6","ref":"refs/heads/TransportConfig","pushedAt":"2024-08-12T15:46:32.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Add `TransportConfig` to control low level transport settings\n\nMotivation:\n\nUsers need a way to change low-level Netty settings, like\n`AdaptiveRecvByteBufAllocator` parameters. In the future, we can use\nthis interface for more similar settings without the need to change\nclient/server builder.\n\nModifications:\n\n- Add `TransportConfig` and `TransportConfigBuilder` in `transport-api`\nmodule;\n- Add methods on `SingleAddressHttpClientBuilder` and\n`HttpServerBuilder` to let users pass `TransportConfig`;\n- Wire it up to propagate to `Tcp[Client|Server]ChannelInitializer` as\n`TransportConfigInitializer`;\n\nResult:\n\nUsers can control `AdaptiveRecvByteBufAllocator` settings.","shortMessageHtmlLink":"Add TransportConfig to control low level transport settings"}},{"before":"14df0c1e2b63dcf3a9f44ed7274eef186d2f287d","after":"dc47db075b6f3ed05b40ac404ca1b7fdcba6f4d3","ref":"refs/heads/split-fix","pushedAt":"2024-08-09T23:25:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Make SplicingSubscriber private","shortMessageHtmlLink":"Make SplicingSubscriber private"}},{"before":"0a2152e1f980349f56c74773283a5d2e5cb167e3","after":"f3f3cf9d09237d18dd58964c4a71a9919d4d68d1","ref":"refs/heads/CancellationException","pushedAt":"2024-08-09T23:22:17.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Remove outdated comments (were useful when we used static exceptions)","shortMessageHtmlLink":"Remove outdated comments (were useful when we used static exceptions)"}},{"before":null,"after":"0a2152e1f980349f56c74773283a5d2e5cb167e3","ref":"refs/heads/CancellationException","pushedAt":"2024-08-09T23:19:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Improve `CancellationException`\n\nMotivation:\n\n1. `H2ClientParentConnectionContext.StacklessCancellationException` was\nreused by `SpliceFlatStreamToMetaSingle`, which created a false\nimpression in logs that this exception is related to HTTP/2.\n2. There is not much value in a stacktrace for `CancellationException`\nin `BeforeFinallyHttpOperator`.\n\nModifications:\n\n1. Make `H2ClientParentConnectionContext.StacklessCancellationException`\na top level class.\n2. Create a `StacklessCancellationException` in http-utils module for\n`BeforeFinallyHttpOperator`.\n3. Add exception message in `DefaultBlockingIterableProcessor`.\n\nResult:\n\nEasier for users to reason about received `CancellationException`.","shortMessageHtmlLink":"Improve CancellationException"}},{"before":"992e1a3003cfc2354d2821621fd9799d5be565f6","after":"14df0c1e2b63dcf3a9f44ed7274eef186d2f287d","ref":"refs/heads/split-fix","pushedAt":"2024-08-09T22:58:22.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"improve assertions","shortMessageHtmlLink":"improve assertions"}},{"before":"d3cb6d96719c641c4da9bdf1742e6cb0cf1d4ac6","after":null,"ref":"refs/heads/JavaNetSoTimeoutHttpConnectionFilterTest","pushedAt":"2024-08-09T18:03:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":null,"after":"d3cb6d96719c641c4da9bdf1742e6cb0cf1d4ac6","ref":"refs/heads/JavaNetSoTimeoutHttpConnectionFilterTest","pushedAt":"2024-08-09T01:03:48.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Debug JavaNetSoTimeoutHttpConnectionFilterTest","shortMessageHtmlLink":"Debug JavaNetSoTimeoutHttpConnectionFilterTest"}},{"before":"38083e88717ba17a180a456006ed35d730a6e0c6","after":"992e1a3003cfc2354d2821621fd9799d5be565f6","ref":"refs/heads/split-fix","pushedAt":"2024-08-09T00:31:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"Temporarily disable JavaNetSoTimeoutHttpConnectionFilterTest","shortMessageHtmlLink":"Temporarily disable JavaNetSoTimeoutHttpConnectionFilterTest"}},{"before":null,"after":"38083e88717ba17a180a456006ed35d730a6e0c6","ref":"refs/heads/split-fix","pushedAt":"2024-08-08T23:18:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"},"commit":{"message":"`SpliceFlatStreamToMetaSingle`: propagate cancel when races with data","shortMessageHtmlLink":"SpliceFlatStreamToMetaSingle: propagate cancel when races with data"}},{"before":"3511450f1b52ceb5e8660a0fae13ae32b4dea7d9","after":null,"ref":"refs/heads/fail-fast","pushedAt":"2024-08-06T16:05:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}},{"before":"ddc9487d46642d1e4cd7410819d572f4515c603d","after":null,"ref":"refs/heads/drain","pushedAt":"2024-07-31T16:27:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"idelpivnitskiy","name":"Idel Pivnitskiy","path":"/idelpivnitskiy","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3968288?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEoZj01wA","startCursor":null,"endCursor":null}},"title":"Activity · idelpivnitskiy/servicetalk"}