{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":23061798,"defaultBranch":"master","name":"seastar","ownerLogin":"scylladb","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-08-18T07:01:07.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/14364730?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1719507074.0","currentOid":""},"activityList":{"items":[{"before":"0244a45b4cc8943d61474e05e572ae2f69f148ac","after":"f09e7c444c1d0d08b37cc13d6a2b0e21d584cedb","ref":"refs/heads/master","pushedAt":"2024-06-28T14:19:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"stall-analyser: gracefully handle empty input\n\nCurrently, the tools prints an obscure error\nif the input is empty:\n```\nTraceback (most recent call last):\n File \"/home/bhalevy/dev/scylla_s3_reloc_server/./seastar//scripts/stall-analyser.py\", line 363, in \n print_stats(tally, tmin)\n ^^^^\nNameError: name 'tmin' is not defined. Did you mean: 'min'?\n```\n\nInstead, print a meaningful error and direct the user\nto run stall-analyser.py --help for usage instructions.\n\nRef https://github.com/scylladb/scylla_s3_reloc_server/pull/103\n\nSigned-off-by: Benny Halevy \n\nCloses scylladb/seastar#2305","shortMessageHtmlLink":"stall-analyser: gracefully handle empty input"}},{"before":"eaf51a3a2bc6ed9f60260b4403136aaaba182123","after":"0244a45b4cc8943d61474e05e572ae2f69f148ac","ref":"refs/heads/master","pushedAt":"2024-06-28T14:17:52.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"shared_token_bucket: resolve FIXME\n\nThe specialization of 'struct rovers' for 'capped_release::no'\ndoes not support 'release()' member function. If it was called,\nit would call abort().\n\nThis change resolves FIXME that demanded this member function to\nnot be compiled. Usage of '= delete' was introduced to break the\ncompilation if the user tries to use release().\n\nSigned-off-by: Patryk Wrobel \n\nCloses scylladb/seastar#2308","shortMessageHtmlLink":"shared_token_bucket: resolve FIXME"}},{"before":"154a0c0ff2ae4558bf2ee9c929e57868f4a99a5c","after":null,"ref":"refs/heads/branch-5.4","pushedAt":"2024-06-27T16:51:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"}},{"before":null,"after":"154a0c0ff2ae4558bf2ee9c929e57868f4a99a5c","ref":"refs/heads/branch-5.4","pushedAt":"2024-06-27T12:22:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"Merge 'http: path parameter parsing convenience methods' from Gellért Peresztegi-Nagy\n\nSome REST APIs of Redpanda were incorrectly using the `seastar::http::internal::url_decode` method to url decode path parameters, ignoring the subtle difference between the rules of query parameter decoding and path parameter decoding. This caused issues for Redpanda's clients as they were unable to delete users that had a '+' in the username.\n\nAs part of solving this decoding problem, we introduced a `path_decode` method similar to seastar's `url_decode`, and it would be most convenient if this method lived next to the existing `url_decode` utility method that seastar provides both to enable code reuse and to bring it to users' attention that they should make a conscious choice between the two decode methods.\n\nTo make this even easier, this PR also adds the `get_path_param` convenience method to the http request object, similar to `get_query_param`, to expose the decoded path parameters of the http request.\n\nRelated PR: https://github.com/redpanda-data/seastar/pull/97\nFixes https://github.com/scylladb/seastar/issues/725\n\nCloses #2125\n\n* github.com:scylladb/seastar:\n http: deprecate buggy path param[]\n http/request: add get_path_param method\n http/request: get_query_param refactor\n http/util: add path_decode method\n\n(cherry picked from commit f57292cbf70d8e336855f5987f76aef3cfb2368b)","shortMessageHtmlLink":"Merge 'http: path parameter parsing convenience methods' from Gellért…"}},{"before":"908ccd936a63a37cd98470ad8bf44a20d969c51e","after":"eaf51a3a2bc6ed9f60260b4403136aaaba182123","ref":"refs/heads/master","pushedAt":"2024-06-24T18:19:47.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"Merge 'Simplify fs-info getting in make_file_impl()' from Pavel Emelyanov\n\nThe helper looks up in the map of fs-info-s twice and returns the chain of ready futures on the common paths. This PR makes things simpler.\n\nCloses #2297\n\n* github.com:scylladb/seastar:\n file: Use lighter access to map of fs-info-s\n file: Fix indentation after previous patch\n file: Don't return chain of ready futures from make_file_impl","shortMessageHtmlLink":"Merge 'Simplify fs-info getting in make_file_impl()' from Pavel Emely…"}},{"before":"53e33e00fd245ebb895d0bc6413cfa31424ea9ba","after":"908ccd936a63a37cd98470ad8bf44a20d969c51e","ref":"refs/heads/master","pushedAt":"2024-06-19T12:57:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"include/seastar: do not include unused headers\n\nthese unused includes were identified by clangd. see\nhttps://clangd.llvm.org/guides/include-cleaner#unused-include-warning\nfor more details on the \"Unused include\" warning.\n\nSigned-off-by: Kefu Chai \n\nCloses #2300","shortMessageHtmlLink":"include/seastar: do not include unused headers"}},{"before":"0b533818227b931d87d09fdbbce98e5801ec7384","after":"53e33e00fd245ebb895d0bc6413cfa31424ea9ba","ref":"refs/heads/master","pushedAt":"2024-06-18T14:27:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"timer-set: Add missing sanity headers\n\nThe checkheaders target somehow stepped on recently merged #2269, while\nthe PR itself passed CI when it was created\n\nFAILED: CMakeFiles/checkheaders-seastar.dir/checkheaders/include/seastar/core/timer-set.hh.cc.o\n/usr/lib64/ccache/g++ -DBOOST_NO_CXX98_FUNCTION_BASE -DFMT_SHARED -DSEASTAR_API_LEVEL=7 -DSEASTAR_BUILD_SHARED_LIBS -DSEASTAR_DEFERRED_ACTION_REQUIRE_NOEXCEPT -DSEASTAR_DEPRECATED_OSTREAM_FORMATTERS -DSEASTAR_ENABLE_ALLOC_FAILURE_INJECTION -DSEASTAR_HAS_MEMBARRIER -DSEASTAR_HAVE_ASAN_FIBER_SUPPORT -DSEASTAR_HAVE_HWLOC -DSEASTAR_HAVE_NUMA -DSEASTAR_HAVE_SYSTEMTAP_SDT -DSEASTAR_HAVE_URING -DSEASTAR_LOGGER_COMPILE_TIME_FMT -DSEASTAR_LOGGER_TYPE_STDOUT -DSEASTAR_PTHREAD_ATTR_SETAFFINITY_NP -DSEASTAR_SCHEDULING_GROUPS_COUNT=16 -DSEASTAR_SSTRING -DSEASTAR_STRERROR_R_CHAR_P -DSEASTAR_THREAD_STACK_GUARDS -DSEASTAR_TYPE_ERASE_MORE -Dcheckheaders_seastar_EXPORTS -I/home/xemul/src/seastar-2/include/seastar/core -I/home/xemul/src/seastar-2/include/seastar/util -I/home/xemul/src/seastar-2/include/seastar/http -I/home/xemul/src/seastar-2/include/seastar/json -I/home/xemul/src/seastar-2/include/seastar/net -I/home/xemul/src/seastar-2/include/seastar/rpc -I/home/xemul/src/seastar-2/include/seastar/websocket -I/home/xemul/src/seastar-2/src/core -I/home/xemul/src/seastar-2/include -I/home/xemul/src/seastar-2/build/dev/gen/include -I/home/xemul/src/seastar-2/build/dev/gen/src -I/home/xemul/src/seastar-2/src -O1 -std=gnu++23 -fPIC -U_FORTIFY_SOURCE -Wno-maybe-uninitialized -Wno-error=unused-result -fstack-clash-protection -UNDEBUG -Wall -Werror -Wimplicit-fallthrough -Wdeprecated -Wno-error=deprecated -Wno-error=stringop-overflow -Wno-error=array-bounds -Wdeprecated-declarations -Wno-error=deprecated-declarations -ftls-model=initial-exec -gz -Wno-unused-const-variable -Wno-unused-function -Wno-unused-variable -MD -MT CMakeFiles/checkheaders-seastar.dir/checkheaders/include/seastar/core/timer-set.hh.cc.o -MF CMakeFiles/checkheaders-seastar.dir/checkheaders/include/seastar/core/timer-set.hh.cc.o.d -o CMakeFiles/checkheaders-seastar.dir/checkheaders/include/seastar/core/timer-set.hh.cc.o -c /home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:27:6: error: variable or field ‘log_timer_callback_exception’ declared void\n 27 | void log_timer_callback_exception(std::exception_ptr) noexcept;\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:27:40: error: ‘exception_ptr’ is not a member of ‘std’\n 27 | void log_timer_callback_exception(std::exception_ptr) noexcept;\n | ^~~~~~~~~~~~~\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:20:1: note: ‘std::exception_ptr’ is defined in header ‘’; did you forget to ‘#include ’?\n 19 | #include \n +++ |+#include \n 20 | #include \n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc: In member function ‘void seastar::timer_set::complete(timer_list_t&, EnableFunc&&)’:\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:236:30: error: there are no arguments to ‘current_scheduling_group’ that depend on a template parameter, so a declaration of ‘current_scheduling_group’ must be available [-fpermissive]\n 236 | const auto prev_sg = current_scheduling_group();\n | ^~~~~~~~~~~~~~~~~~~~~~~~\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:236:30: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:247:32: error: ‘current_scheduling_group_ptr’ is not a member of ‘seastar::internal’\n 247 | *internal::current_scheduling_group_ptr() = t->_sg;\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:250:31: error: ‘log_timer_callback_exception’ is not a member of ‘seastar::internal’\n 250 | internal::log_timer_callback_exception(std::current_exception());\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:250:65: error: ‘current_exception’ is not a member of ‘std’\n 250 | internal::log_timer_callback_exception(std::current_exception());\n | ^~~~~~~~~~~~~~~~~\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:250:65: note: ‘std::current_exception’ is defined in header ‘’; did you forget to ‘#include ’?\n/home/xemul/src/seastar-2/build/dev/checkheaders/include/seastar/core/timer-set.hh.cc:256:20: error: ‘current_scheduling_group_ptr’ is not a member of ‘seastar::internal’\n 256 | *internal::current_scheduling_group_ptr() = prev_sg;\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Pavel Emelyanov ","shortMessageHtmlLink":"timer-set: Add missing sanity headers"}},{"before":"903e413c56ceccfa49c46261913b9c0245cf9051","after":"0b533818227b931d87d09fdbbce98e5801ec7384","ref":"refs/heads/master","pushedAt":"2024-06-18T13:47:05.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"Merge 'Support mutable lambdas in sharded::invoke_on_others' from Pavel Emelyanov\n\nCurrently only sharded::invoke_on_all() can call mutable lambdas, the ..._on_others fails to compile. This PR fixes it and adds test for more invoke_on_... compilation options.\n\nCloses scylladb/seastar#2279\n\n* github.com:scylladb/seastar:\n test: Add test for sharded<>::invoke_on_...() compilation\n sharded: Mark invoke_on_others() helper lambda mutable","shortMessageHtmlLink":"Merge 'Support mutable lambdas in sharded::invoke_on_others' from Pav…"}},{"before":"2b7bef1214ebe14c3a366ec872e91723e7765a59","after":"903e413c56ceccfa49c46261913b9c0245cf9051","ref":"refs/heads/master","pushedAt":"2024-06-17T08:28:30.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"Merge 'Unfriend reactor from timer' from Pavel Emelyanov\n\nReactor messes with private timer fields, but it doesn't really need to. All the code that does so naturally belongs to timer_set class, not reactor itself.\n\nCloses scylladb/seastar#2269\n\n* github.com:scylladb/seastar:\n timer: Unfriend reactor\n reactor: Generalize timer removal\n timer: Add type alias for timer_set\n reactor: Move reactor::complete_timers() to timer_set","shortMessageHtmlLink":"Merge 'Unfriend reactor from timer' from Pavel Emelyanov"}},{"before":"d7bd2e7178f55db4e5731b7a4168e22d509d7776","after":"2b7bef1214ebe14c3a366ec872e91723e7765a59","ref":"refs/heads/master","pushedAt":"2024-06-17T04:25:11.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"Merge 'Minor improvements to the json subsystem' from Stephan Dollberg\n\nSome improvements to the json subsystem:\n\n - Fix a lifetime issue in stream_range_as_array\n - Make formatter::write(const jsonable&) recursively call `write` and not `to_json`. This allows for recursive streamable encoding and hence avoids some potentially very large string allocations\n - Adds some tests for the above\n\nNote that because whitespace bahaviour is inconsistent across the different ways of encoding things (`write`, `to_json`, vector encoding, map encoding, ...) some of the tests need adapting as there is now less whitespace.\n\nCloses scylladb/seastar#2287\n\n* https://github.com/scylladb/seastar:\n json: Add a test for jsonable objects\n json: Make formatter::write(vector/map/umap) copy their arguments\n json: Make formatter call write for jsonable","shortMessageHtmlLink":"Merge 'Minor improvements to the json subsystem' from Stephan Dollberg"}},{"before":"6c1477986415dd91844747b133c9fc6949781b64","after":"d7bd2e7178f55db4e5731b7a4168e22d509d7776","ref":"refs/heads/master","pushedAt":"2024-06-13T07:29:14.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"Merge 'Update tutorial.md to reflect updated preemption methods' from Travis Downs\n\nI was actually surprised to see that `then()` no longer does a preemption check (and this certainly leads to better code generation!).\n\nI checked the tutorial and notice that it refers a different mechanism entirely, a 256-continuation counter but I can't find any trace of this in the code, so I assume it preceeded the time-based preemption check which has subsequently been removed.\n\nSo:\n\n - Rip out mention of the 256-counter\n - Talk about preemption which isn't really covered in the tutorial and add that then() is not a suspension point (but co_await is, by default)\n\nCloses #2292\n\n* github.com:scylladb/seastar:\n tutorial.md: fix typos\n Update tutorial.md to reflect update preemption methods\n tutorial.md: remove trailing whitespace","shortMessageHtmlLink":"Merge 'Update tutorial.md to reflect updated preemption methods' from…"}},{"before":"5508176ebed6d1c8ba8395f935a8b7361765b85e","after":"6c1477986415dd91844747b133c9fc6949781b64","ref":"refs/heads/master","pushedAt":"2024-06-11T12:55:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"test: futures: verify stream yields the consumed value\n\nbefore this change, we do not verify that `stream` produces the\nconsumed values.\n\nafter this change, we check if the subscriber of `stream` gets the\nvalue sent by the writer side.\n\nSigned-off-by: Kefu Chai ","shortMessageHtmlLink":"test: futures: verify stream yields the consumed value"}},{"before":"71d9363e58db8584f95703dcd1a3d88b18222cd2","after":"5508176ebed6d1c8ba8395f935a8b7361765b85e","ref":"refs/heads/master","pushedAt":"2024-06-11T10:50:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"build: add pyyaml to install-dependencies.sh\n\nin 6de08b079d, we introduced the dependency to pyyaml, but we failed\nto update `install-dependencies.sh` to install it.\n\nin this change, we add this dependency to `install-dependencies.sh`.\n\nRefs 6de08b079d\nSigned-off-by: Kefu Chai ","shortMessageHtmlLink":"build: add pyyaml to install-dependencies.sh"}},{"before":"ebf44ab6ac90c3ed7be2d438f839d082c11dae82","after":"71d9363e58db8584f95703dcd1a3d88b18222cd2","ref":"refs/heads/master","pushedAt":"2024-06-10T17:13:33.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"Merge 'tests: merge test_metrics.py into prometheus_test.py ' from Kefu Chai\n\nin this series, we move all tests in `test_metrics.py` into `prometheus_test.py ` to drop the repeating code.\n\nCloses scylladb/seastar#2254\n\n* https://github.com/scylladb/seastar:\n tests: test protobuf support in prometheus_test.py\n tests: enable prometheus_test.py to test metrics without aggregation","shortMessageHtmlLink":"Merge 'tests: merge test_metrics.py into prometheus_test.py ' from Ke…"}},{"before":"8f9c857f406f039f1310601a8b4fd2e1ac0123ea","after":"ebf44ab6ac90c3ed7be2d438f839d082c11dae82","ref":"refs/heads/master","pushedAt":"2024-06-10T11:54:36.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"Merge 'docker: Lint dockerfile' from Pavel Talashchenko\n\nlint dockerfile ([linter](https://hadolint.github.io/hadolint/)):\n- reduce image size\n- reduce layers amount\n- prevent caching issues related to apt-get commands usage\n- use arguments JSON notation for CMD: [rationale](https://github.com/hadolint/hadolint/wiki/DL3025#rationale)\n\nsort packages alphanumerically to make maintenance easier\n\nCloses scylladb/seastar#2283\n\n* https://github.com/scylladb/seastar:\n scripts: sort packages alphanumerically\n docker: bind the file instead of copying during the build stage\n docker: lint dockerfile","shortMessageHtmlLink":"Merge 'docker: Lint dockerfile' from Pavel Talashchenko"}},{"before":"afca8342b111ae4326e914505e96b7d40b8e1032","after":"8f9c857f406f039f1310601a8b4fd2e1ac0123ea","ref":"refs/heads/master","pushedAt":"2024-06-06T09:56:15.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"stall-analyser: remove unused variable\n\n`count` is never used after being assigned, so drop it.\n\nSigned-off-by: Kefu Chai ","shortMessageHtmlLink":"stall-analyser: remove unused variable"}},{"before":"6c8c5f2b8247d10524efde5317eaafb33d2fe2a9","after":"afca8342b111ae4326e914505e96b7d40b8e1032","ref":"refs/heads/master","pushedAt":"2024-06-06T09:55:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"stall-analyser: use itertools.dropwhile when appropriate\n\nfor better readability\n\nSigned-off-by: Kefu Chai ","shortMessageHtmlLink":"stall-analyser: use itertools.dropwhile when appropriate"}},{"before":"47bfd73e304fd02ed91d7edf6c60d720e767eac5","after":"6c8c5f2b8247d10524efde5317eaafb33d2fe2a9","ref":"refs/heads/master","pushedAt":"2024-06-06T07:44:25.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"Merge 'Make http client restart requests' from Pavel Emelyanov\n\nThere's an issue with maintaining keep-alive sockets by http client.\n\nSome prior art first.\n\nThe HTTP client uses seastar connections to send requests over and receive responses back. Typically the connection is a TCP socket (or TLS connection which is a wrapper over TCP socket too). Once request-response cycle is over the connection used for that is kept by a client in a \"pool\". Making another http request may then pick up the existing connection from the pool thus avoiding the extra latency of establishing new connection. Pool may thus accumulate more than one connection if the client user sends several requests in parallel.\n\n```mermaid\nflowchart TD\n A[ Start ] --> B{ pool is not empty }\n B -->| y | C[ pop connection from pool ]\n B -->| n | D[ establish new connection ]\n C --> E[ talk to server ]\n D --> E\n E --> F{ got error? }\n F --> | n | G[ push connection to pool ]\n F --> | y | H[ Done ]\n G --> H\n```\n\nHTTP servers may sometimes want to terminate the connections it keeps. This can happen in one of several ways.\n\nThe \"gentle\" way is when server adds the \"connection: close\" header to its response. In that case client would handle the response and will not put the connection back to pool, but instead would just close it. So next request would either pick some other connection from pool or would need to establish a new one.\n\nLess gentle way a server may terminate a connection is by closing it, so the underlying TCP stack would communicate regular TCP FIN-s. On the client side there's connected_socket::wait_input_shutdown() method that returns a future that gets resolved when kernel terminates the connection by peers request. In case client's connection is kept in pool it will be closed and removed from the pool behind the scenes. Next request won't even notice that -- it will either pick some other connection from pool, or will establish a new one.\n\nSometimes more unpleasant situation happens. It can be either a race or deliberate server's \"abort\". In the former case, server closes the connection and TCP starts communicating FIN-s in parallel with client picking up a connection for its new request. In that case, even if kernel resolves \"input-shutdown\" event described above, due to seastar event loop and batch flusher, client would see that the connection is closed _after_ it had picked it from pool and had chance to put some data into it. In the latter case server closes the connection in the middle of reading the request from the client or even in the middle of writing back the response. This is very unlikely, but still happens from time to time.\n\nHaving said the above, the problem -- when user calls `client::make_request()` and client steps on the \"unpleasant\" server-side connection closure, the request making resolves with exception and user has to do something about it. There are two options here -- handle the exception somehow or ask client to make the same request again (restart the request). This PR suggest that the latter choice can be implemented in the HTTP client code. If user doesn't want to restart, it may ask client not to do it, the new API allows for that.\n\nFirst (a side node) -- to tell the \"server closed its socket\" from other errors the exception from scoket IO is checked to be the system error with EPIPE or ECONABORTED code in it. EPIPE is reported when it comes from writing the request, ECONABORTED is reported when it comes from reading the response.\n\nNext, there's only one way to replay the request -- client should get new connection somehow and repeat the request-response cycle. There are two options where to get new connection from -- from pool (if it's there) or establish a new one. While experimenting with HTTP client I noticed that picking up connection from pool often results in several \"transport exception\"-s in a row, as if server was closing connections in batches. So this PR makes a shortcut for restarts it always establishes new connection to server (which, after request-response cycle, is put back into pool normally).\n\n```mermaid\nflowchart TD\n A[ Start ] --> B{ pool is not empty }\n B -->| y | C[ pop connection from pool ]\n B -->| n | D[ establish new connection ]\n C --> E[ talk to server ]\n D --> E\n E --> F{ got error? }\n F --> | n | G[ push connection to pool ]\n F --> | y | J{ should restart }\n J --> | n | H[ Done ]\n J --> | y | D\n G --> H\n```\n\nAnd the last, but not least, restart only happens once, because the chance of observing \"transport exception\" from newly established connection is considered to be low enough not to care. Respectively, if a request is made over new connection (not over a connection from pool) and \"transport exception\" pops up it's not restarted.\n\nCloses #1883\n\n* github.com:scylladb/seastar:\n http/client: Retry request over fresh connection in case old one failed\n http/client: Fix indentation after previous patch\n http/client: Pass request and handle by reference\n http/client: Introduce make_new_connection()\n http/client: Fix parser result checking\n http/client: Document max_connections\n test/http: Generalize http connection factory\n loopback_socket: Shutdown socket on EOF close\n loopback_socket: Rename buffer's shutdown() to abort()","shortMessageHtmlLink":"Merge 'Make http client restart requests' from Pavel Emelyanov"}},{"before":"debb85bd606f7067fb6d5e6de662a97b489bbaec","after":"47bfd73e304fd02ed91d7edf6c60d720e767eac5","ref":"refs/heads/master","pushedAt":"2024-06-05T10:51:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"dns: use undeprecated c-ares APIs\n\nc-ares marked some APIs deprecated in 1.28.1.\n\nin this change, we conditionally use the undeprecated APIs when\nthey are available. please note, we don't specify the minimal\nsupported c-ares version in our building system.\n\nin which, ares_fds() and ares_process() are not changed yet, because\nwe need to change the way how to poll the events for name resolution.\nthis would need more thoughts before moving forward.\n\nRefs #2197\nSigned-off-by: Kefu Chai \n\nCloses scylladb/seastar#2200","shortMessageHtmlLink":"dns: use undeprecated c-ares APIs"}},{"before":"df663b6a9d7836a0ee3594a1246ebc2235a3bddb","after":"debb85bd606f7067fb6d5e6de662a97b489bbaec","ref":"refs/heads/master","pushedAt":"2024-06-05T10:29:06.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"stall-analyser: use argparse.FileType when appropriate\n\nsimpler this way.\n\nSigned-off-by: Kefu Chai \n\nCloses scylladb/seastar#2281","shortMessageHtmlLink":"stall-analyser: use argparse.FileType when appropriate"}},{"before":"9d671a23635473ed08a0a9cfea2f80a6f38c8e70","after":"df663b6a9d7836a0ee3594a1246ebc2235a3bddb","ref":"refs/heads/master","pushedAt":"2024-06-04T18:09:27.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"Merge 'io_tester: add parameter to force certain extent size hint value' from Patryk Wróbel\n\nBy default io_tester uses the size of a file\nas the allocation extent size hint. However,\ncertain tests may want to specify some exact\nvalue for that parameter e.g. to match the\nextent size hint configured for a specific product.\n\nThis change adds a new parameter to YAML job\ndescription that enables users to explicitly\nset some specific value for extent size hint.\n\nCloses scylladb/seastar#2280\n\n* https://github.com/scylladb/seastar:\n io-tester.md: update available parameters for job description\n io_tester: expose extent_allocation_size_hint via job param","shortMessageHtmlLink":"Merge 'io_tester: add parameter to force certain extent size hint val…"}},{"before":"12fb4feed1f9a11c13263dcbe8ddb30354abca88","after":"9d671a23635473ed08a0a9cfea2f80a6f38c8e70","ref":"refs/heads/master","pushedAt":"2024-06-03T11:16:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"net/tls: Added additional error codes\n\nIn order to not have to reference actual GnuTLS error codes in\nthe user application, expose some additional error codes via\nseastar::tls::ERROR_* variables.\n\nSigned-off-by: Michael Boquard \n\nCloses #2277","shortMessageHtmlLink":"net/tls: Added additional error codes"}},{"before":"f3b7fbbe0384b64917f8d550fdcd251f25740f21","after":"12fb4feed1f9a11c13263dcbe8ddb30354abca88","ref":"refs/heads/master","pushedAt":"2024-06-03T10:05:45.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"Merge 'Unfriend reactor from scheduling_group_key' from Pavel Emelyanov\n\nThe scheduling_group_key is assumed to be only copy-able and move-able by its users. However, reactor wants to mess with its ID for its maintenance purposes, but there's dedicated internal:: helper for that. Also rector wants to construct a temporary key object out of id, but that's just the way how internal reactor helper works, it can go with plain integral id value.\n\nCloses scylladb/seastar#2275\n\n* github.com:scylladb/seastar:\n scheduling: Unfriend reactor from scheduling_group_key\n reactor: Make allocate_scheduling_group_specific_data() accept key_id argument\n reactor: Add local key_id variable to allocate_scheduling_group_specific_data()","shortMessageHtmlLink":"Merge 'Unfriend reactor from scheduling_group_key' from Pavel Emelyanov"}},{"before":"2bc4f22b9d94e62a1de2694822a6dbce2a164cdd","after":"f3b7fbbe0384b64917f8d550fdcd251f25740f21","ref":"refs/heads/master","pushedAt":"2024-06-03T07:45:16.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"file: Unfriend reactor class\n\nNot needed currently\n\nSigned-off-by: Pavel Emelyanov \n\nCloses #2270","shortMessageHtmlLink":"file: Unfriend reactor class"}},{"before":"9ce627051ff60fd39d62652b758d253f659c8be8","after":"2bc4f22b9d94e62a1de2694822a6dbce2a164cdd","ref":"refs/heads/master","pushedAt":"2024-06-02T14:09:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nyh","name":"Nadav Har'El","path":"/nyh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/584227?s=80&v=4"},"commit":{"message":"memory.cc: fix cross-shard shrinking realloc\n\nCross-shard shrinking realloc crashes because we assert that the\nincoming pointer is shard local inside the shrink method but there is\nno particular reason to assume this is the case with a realloc: the\ninitial allocation may have been made on another shard.\n\nFix this by falling through to the free/malloc/memcpy path. This also\nmeans that realloc using the same size is a way to \"rehome\" a possibly\nforeign pointer: this does nothing if the pointer is already local but\nit will allocate a local pointer and copy the allocation contents if\nnot.\n\nFixes #2202.\n\nCloses #2217","shortMessageHtmlLink":"memory.cc: fix cross-shard shrinking realloc"}},{"before":"8defba200d8b3f15ecb7407d5e7d838bf340089b","after":"9ce627051ff60fd39d62652b758d253f659c8be8","ref":"refs/heads/master","pushedAt":"2024-05-30T06:11:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"github: do not set --dpdk-machine haswell\n\nin ba395a22, in order to workaround a bug in clang-18, we hardwired\n--dpdk-machine to haswell, but now that LLVM 18.1.6 has released,\nand fedora 40 has received the new LLVM package built from LLVM 18.1.6,\nwe can now partially drop this change.\n\nFixes #2259\nSigned-off-by: Kefu Chai \n\nCloses scylladb/seastar#2276","shortMessageHtmlLink":"github: do not set --dpdk-machine haswell"}},{"before":"e14181f162649176d457e4b8f490fc13eb46489b","after":"8defba200d8b3f15ecb7407d5e7d838bf340089b","ref":"refs/heads/master","pushedAt":"2024-05-29T12:58:40.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"Merge 'XFS: ensure proper alignment of extent allocation size hint' from Patryk Wróbel\n\nIf the extent size is not aligned to logical block\nsize then XFS ignores it and returns an error from\nioctl() function call.\n\nThese patches ensure that the hint passed by a user\nis properly aligned.\n\nCloses scylladb/seastar#2265\n\n* https://github.com/scylladb/seastar:\n io_tester: correct calculation of writes count\n io-tester.md: update information about file size\n reactor: align used hint for extent size to 128KB for XFS\n io_tester: align the used file size to 1MB","shortMessageHtmlLink":"Merge 'XFS: ensure proper alignment of extent allocation size hint' f…"}},{"before":"ca616e99995fc3f91fbd91146e221ccca7e2745d","after":"e14181f162649176d457e4b8f490fc13eb46489b","ref":"refs/heads/master","pushedAt":"2024-05-29T11:25:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"xemul","name":"Pavel Emelyanov","path":"/xemul","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4498177?s=80&v=4"},"commit":{"message":"Fix compilation failure on Ubuntu 22.04\n\nWhen the code was built according to the\nREADME.md on Ubuntu 22.04 it failed due\nto missing includes of and\n.\n\nCommit b822c94b2bb5860003995ff3fa197709dfc46c2c\nseemed to be the first for which the issue\noccurred.\n\nThis change adds missing includes and removes\nusage of \"std-compat.hh\" in modified files when\npossible.\n\nSigned-off-by: Patryk Wrobel \n\nCloses scylladb/seastar#2274","shortMessageHtmlLink":"Fix compilation failure on Ubuntu 22.04"}},{"before":"717f0f95ab13c58d618cfcfc2e70abfb95f4b89d","after":"ca616e99995fc3f91fbd91146e221ccca7e2745d","ref":"refs/heads/master","pushedAt":"2024-05-28T12:49:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"circular_buffer_fixed_capacity: arrow operator instead of . operator\n\nbefore this change, we use `*i++.~T()` to implement following sequence:\n```c++\nauto p = i++;\nauto& v = *p;\nv.~T();\n```\n\nbut the associativity of `.` and `++` (suffix increment) operator is\nleft-to-right. so from compiler's perspective, it emits:\n\n```c++\nauto p = i++;\nauto v = p.~T();\n*v;\n```\n\nthat's why Clang-19 complains that we are dereferencing a `void`:\n```\n/home/kefu/.local/bin/clang -DFMT_SHARED -DSEASTAR_API_LEVEL=7 -DSEASTAR_BUILD_SHARED_LIBS -DSEASTAR_DEBUG -DSEASTAR_DEBUG_PROMISE -DSEASTAR_DEBUG_SHARED_PTR -DSEASTAR_DEFAULT_ALLOCATOR -DSEASTAR_DEFERRED_ACTION_REQUIRE_NOEXCEPT -DSEASTAR_DEPRECATED_OSTREAM_FORMATTERS -DSEASTAR_HAS_MEMBARRIER -DSEASTAR_HAVE_ASAN_FIBER_SUPPORT -DSEASTAR_HAVE_HWLOC -DSEASTAR_HAVE_NUMA -DSEASTAR_HAVE_SYSTEMTAP_SDT -DSEASTAR_HAVE_URING -DSEASTAR_LOGGER_COMPILE_TIME_FMT -DSEASTAR_LOGGER_TYPE_STDOUT -DSEASTAR_PTHREAD_ATTR_SETAFFINITY_NP -DSEASTAR_SCHEDULING_GROUPS_COUNT=16 -DSEASTAR_SHUFFLE_TASK_QUEUE -DSEASTAR_SSTRING -DSEASTAR_STRERROR_R_CHAR_P -DSEASTAR_THREAD_STACK_GUARDS -DSEASTAR_TYPE_ERASE_MORE -Dseastar_EXPORTS -I/home/kefu/dev/seastar/include -I/home/kefu/dev/seastar/build/debug/gen/include -I/home/kefu/dev/seastar/build/debug/gen/src -I/home/kefu/dev/seastar/src -g -std=gnu++23 -fPIC -U_FORTIFY_SOURCE -Wno-error=unused-result \"-Wno-error=#warnings\" -fstack-clash-protection -UNDEBUG -Wall -Werror -Wimplicit-fallthrough -Wdeprecated -Wno-error=deprecated -gz -fsanitize=address -fsanitize=undefined -fno-sanitize=vptr -MD -MT CMakeFiles/seastar.dir/src/core/app-template.cc.o -MF CMakeFiles/seastar.dir/src/core/app-template.cc.o.d -o CMakeFiles/seastar.dir/src/core/app-template.cc.o -c /home/kefu/dev/seastar/src/core/app-template.cc\nIn file included from /home/kefu/dev/seastar/src/core/app-template.cc:38:\nIn file included from /home/kefu/dev/seastar/include/seastar/core/reactor.hh:27:\n/home/kefu/dev/seastar/include/seastar/core/circular_buffer_fixed_capacity.hh:351:13: error: indirection requires pointer operand ('void' invalid)\n 351 | *i++.~T();\n | ^~~~~~~~~\n/home/kefu/dev/seastar/include/seastar/core/circular_buffer_fixed_capacity.hh:360:13: error: indirection requires pointer operand ('void' invalid)\n 360 | *i++.~T();\n | ^~~~~~~~~\n2 errors generated.\n```\n\nin this change, we trade the `.` operator with `->` operator, to ensure\nthat compiler generates:\n```c++\nauto p = i++;\np->~T();\n```\n\nSigned-off-by: Kefu Chai ","shortMessageHtmlLink":"circular_buffer_fixed_capacity: arrow operator instead of . operator"}},{"before":"7cd0cabfcb6662dba0ad50aeb07a69b0ad20a786","after":"717f0f95ab13c58d618cfcfc2e70abfb95f4b89d","ref":"refs/heads/master","pushedAt":"2024-05-28T12:47:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"avikivity","name":"Avi Kivity","path":"/avikivity","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1017210?s=80&v=4"},"commit":{"message":"posix-file-impl: Do not keep device-id on board\n\nThis number is needed in two places\n\n- construction-time, to find the io-queue object to use\n- run-time, to construct file handle\n\nFile handle uses device id to create another posix_file_impl object on\nanother shard, so it needs device id to find io-queue for it. However,\nwhen creating handle, the deivce-id can be obtained by file from the\nio-queue it references.\n\nSigned-off-by: Pavel Emelyanov ","shortMessageHtmlLink":"posix-file-impl: Do not keep device-id on board"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEcfF1QQA","startCursor":null,"endCursor":null}},"title":"Activity · scylladb/seastar"}