--- Log opened Wed Jan 11 00:00:13 2023 01:00 -!- dunxen [~dunxen@2001:470:69fc:105::1:fec1] has quit [Quit: You have been kicked for being idle] 01:42 -!- andrewtoth_ [~andrewtot@gateway/tor-sasl/andrewtoth] has quit [Remote host closed the connection] 01:42 -!- andrewtoth_ [~andrewtot@gateway/tor-sasl/andrewtoth] has joined #bitcoin-core-pr-reviews 02:49 -!- __gotcha [~Thunderbi@79.132.249.86] has quit [Ping timeout: 252 seconds] 02:54 -!- __gotcha [~Thunderbi@79.132.249.86] has joined #bitcoin-core-pr-reviews 02:58 -!- __gotcha [~Thunderbi@79.132.249.86] has quit [Ping timeout: 272 seconds] 04:32 -!- MrFrancis [~MrFrancis@bl15-115-2.dsl.telepac.pt] has joined #bitcoin-core-pr-reviews 04:48 -!- MrFrancis [~MrFrancis@bl15-115-2.dsl.telepac.pt] has quit [Ping timeout: 252 seconds] 04:51 -!- __gotcha [~Thunderbi@79.132.249.86] has joined #bitcoin-core-pr-reviews 04:59 -!- MrFrancis [~MrFrancis@2001:8a0:fa4c:901:4c4c:f4a6:e352:5123] has joined #bitcoin-core-pr-reviews 05:48 -!- jon_atack [~jonatack@user/jonatack] has joined #bitcoin-core-pr-reviews 05:49 -!- jonatack [~jonatack@user/jonatack] has quit [Ping timeout: 260 seconds] 06:00 -!- __gotcha [~Thunderbi@79.132.249.86] has quit [Read error: Connection reset by peer] 06:00 -!- __gotcha1 [~Thunderbi@79.132.249.86] has joined #bitcoin-core-pr-reviews 06:02 -!- __gotcha1 is now known as __gotcha 07:16 -!- codo [~codeautis@user/codeautist] has joined #bitcoin-core-pr-reviews 08:00 -!- Yaz [~Yaz@gw81-151.jcsfiberlink.net] has joined #bitcoin-core-pr-reviews 08:50 -!- Talkless [~Talkless@mail.dargis.net] has joined #bitcoin-core-pr-reviews 08:53 -!- effexzi [uid474242@id-474242.ilkley.irccloud.com] has joined #bitcoin-core-pr-reviews 08:58 -!- svav [~svav@82-69-86-143.dsl.in-addr.zen.co.uk] has joined #bitcoin-core-pr-reviews 08:59 -!- d33r_gee [~d33r_gee@45-27-31-99.lightspeed.sntcca.sbcglobal.net] has joined #bitcoin-core-pr-reviews 09:00 < stickies-v> #startmeeting 09:00 < d33r_gee> hello 09:00 < effexzi> Hi every1 09:00 < emzy> hi 09:00 < svav> Hi there 09:00 < codo> hi 09:01 < stickies-v> welcome everyone - thank you for joining us again in the new year! Today we're looking at #26742, authored by fjahr, building on previous work done by promag. The notes and questions are available on https://bitcoincore.reviews/26742 09:01 < stickies-v> is anyone joining us for the first time today? even if you're just lurking, feel free to say hi! 09:01 < brunoerg> hi! 09:02 -!- rozehnal_paul [~rozehnal_@142.157.221.175] has joined #bitcoin-core-pr-reviews 09:02 < Yaz> hi 09:02 < codo> first timer, probably just lurking 09:02 < Yaz> first time here, tried to understand as much as possible from the PR :) 09:02 < LarryRuane> hi 09:03 < rozehnal_paul> hi 09:03 < stickies-v> awesome, great to have you here codo, and Yaz ! lurking is great, but feel free to ask or contribute as much as you want 09:03 < glozow> hi 09:04 < stickies-v> who got the chance to review the PR or read the notes? (y/n) 09:04 < rozehnal_paul> y 09:04 < Yaz> y 09:04 < emzy> n just read notes and pr. 09:04 < codo> y 09:04 < LarryRuane> n (only a little) 09:04 < svav> Read the notes 09:05 < stickies-v> it's a pretty small PR in terms of LoC changed, but it pulled me down much deeper a rabbit hole than I expected 09:05 < LarryRuane> The condition variable stuff is really cool, but takes some studying to understand 09:06 < stickies-v> for those of you who were able to review, would you give it a Concept ACK, Approach ACK, Tested ACK, or NACK? 09:06 < stickies-v> LarryRuane: same here! we use it in other places in the code too, but this is the first time I properly looked at it 09:06 < LarryRuane> concept ACK for sure 09:07 < rozehnal_paul> concept ACK - will expedite testing in the future 09:07 < LarryRuane> the concept goes all the way back to the UNIX kernel sleep()/wakeup() synchronization mechanism (which i've always loved) 09:07 < LarryRuane> (tells you how old i am!) 09:08 < Yaz> I dont know if this should be asked here/know 09:08 < Yaz> Why was there a significant performance boost in testing ~31 seconds improvement 09:08 < stickies-v> Yaz: we'll cover that in one of the questions - hang tight! 09:09 < stickies-v> quick note before diving into the questions: the PR has been updated slightly since these notes were released, so the current commit hashes are different. I'll keep linking to the "old" (6d3a848 and earlier) commits here. 09:09 < stickies-v> to start off - how would you briefly summarize what this PR is doing? 09:10 < svav> Makes node shutdowns faster so improves developer workflow and productivity. 09:12 < stickies-v> svav: yes, that's the purpose of the PR and the main effect of the code 09:12 < Yaz> I did not understand the purpose of the PR, unfortunately :( 09:13 < rozehnal_paul> Yaz the change is subtle, and not really user-facing. like svav said, nodes can shutdown faster now, a small but noticeable benefit 09:13 < stickies-v> most of the code of the PR actually does not (directly) contribute to the performance improvement, but deals with shutting down the HTTP server safely, i.e. ensure we don't kill it before all inbound requests are dealt with in one way or another 09:14 < stickies-v> Yaz: an easy way to observe the effect of the PR is by running `./test/functional/feature_abortnode.py` and on this branch. You should notice a drastic speedup on this branch 09:15 < stickies-v> alright, moving on to the prep questions 09:15 < stickies-v> 1. Which of Bitcoin Core's interface(s) (RPC, REST, ZMQ) make use of the HTTP server? For each interface, how many handlers are registered to `pathHandlers`? 09:15 < stickies-v> (as always - feel free to continue discussing previous questions while we move on to the next one) 09:15 < svav> Well RPC definitely does ... 09:15 < Yaz> Thank you stickies-v rozehnal_paul 09:16 < LarryRuane> stickies-v: "You should notice a drastic speedup on this branch" -- you're right, with this branch takes my system about 1.5s, without takes 31s 09:17 < rozehnal_paul> 1. definitely rpc interface is involved 09:17 < rozehnal_paul> and rest 09:17 < LarryRuane> "Which of Bitcoin Core's interface(s) ..." -- I believe all of them do (but I don't know the answer to the second question) 09:18 < stickies-v> rozehnal_paul: yes, both RPC and REST rely on the HTTP server! So, ZMQ is the only one that doesn't 09:19 < Yaz> I am definitely not on the same level as you are. 09:19 < Yaz> Is this related to when a user sends a request to his/her node? 09:19 < Yaz> Or is it related to a user relaying blocks/transactions? 09:20 < svav> Would I be right in saying ZMQ (ZeroMQ) is lower level and relies on TCP/IP? 09:20 < stickies-v> LarryRuane: as a hint, the handlers are stored in `pathHandlers` (https://github.com/bitcoin/bitcoin/blob/329d7e379d09fa5db9c057baa0e100d2b174427d/src/httpserver.cpp#L146) 09:21 < stickies-v> Yaz: the RPC, REST and ZMQ interfaces are meant to directly interact with your node (e.g. request or alter information about your wallet, transactions, blocks, ...) in a user-facing way. This is separate from the networking that your node does with other peers, to relay blocks, transactions and addresses etc, which it needs to do in order to be operational 09:22 < LarryRuane> stickies-v: seems to be only http and REST 09:22 < Yaz> stickies-v (y) 09:22 < stickies-v> svav: I'm actually not familiar at all with ZMQ. I just checked whether it was using the HTTP server 🙈 which, it doesn't 09:22 < LarryRuane> (i.e. not ZMQ as far as i can tell) 09:23 < stickies-v> we have 2 handlers for RPC: https://github.com/bitcoin/bitcoin/blob/9887fc789886b356efc6818783cabaab2b14481f/src/httprpc.cpp#L301-L303 09:23 < stickies-v> and another 12 handlers for REST: https://github.com/bitcoin/bitcoin/blob/9887fc789886b356efc6818783cabaab2b14481f/src/rest.cpp#L973-L997 09:23 < svav> Is it four handlers per interface? 09:24 < LarryRuane> http registers 2 handlers, "/" and "/wallet" ... oh REST registers a bunch of them! 09:24 < LarryRuane> (haha sorry i was late with that) 09:25 < stickies-v> LarryRuane: yes, which may be surprising given that the RPC interface is much more extensive. For RPC, we've just standardized the way we organize RPC methods quite well, so we can abstract all that away with just 2 handlers. For REST, however, everything is kinda ad-hoc, and every endpoint is its own handler 09:26 < LarryRuane> so REST could be improved? 09:26 < stickies-v> I just realized my previous answer was not quite nuanced enough 09:27 < stickies-v> I think a big reason (speculating) why we have the handlers the way we do, is because REST calls follow the HTTP URI scheme, where the endpoint is encoded in the URI (e.g. http://somewebsite.com/my/endpoint). For RPC, we don't include the method in the URI but in the payload, I think? 09:28 < rozehnal_paul> +1 Larrys question 09:28 < LarryRuane> if anyone would like to fire up REST, add `-rest` to your config, restart, then for example `curl -s localhost:8332/rest/chaininfo.json|json_pp` 09:28 < stickies-v> but the fact remains that for the RPC we have a lot more standardization (`RPCHelpMan`, `RPCArg`, etc...) than for REST 09:29 < LarryRuane> (or, you don't really need to `json_pp`, just a pretty-printer) 09:29 < stickies-v> 2. We already wait for all threads in `g_thread_http_workers` to be joined before destroying `eventHTTP`, which only happens when the queue is empty (see notes) - so we would expect all requests to be handled by then. Why do we separately need to track `evhttp_request` objects, too? 09:31 < svav> Is a pathhandler a Handler that dispatches to a given handler based on a prefix match of the path? Thanks 09:32 < stickies-v> svav: yes, exactly, see https://github.com/bitcoin/bitcoin/blob/329d7e379d09fa5db9c057baa0e100d2b174427d/src/httpserver.cpp#L241-L272 09:32 < stickies-v> basically the handler tells us which business logic we need to execute in order to satisfy a certain request 09:33 < LarryRuane> "Why do we separately need to track `evhttp_request` objects, too?" -- I couldn't figure this out 09:33 < stickies-v> LarryRuane: can you think of any synchronization issues? 09:34 < LarryRuane> oh, when the queue is empty (and we're not allowing any new requests to be enqueued), there could still be requests in progress? 09:34 < rozehnal_paul> for (; i != iend; ++i) 09:34 < rozehnal_paul> the first statement that is left empty is shorthand for i starts at 0, correct? 09:34 < LarryRuane> rozehnal_paul: no 09:35 < stickies-v> rozehnal_paul: we've already initialized `i` two lines higher up 09:35 < LarryRuane> also, `i` is not an integer, it's an iterator (often called `it` but here only `i`) 09:36 < rozehnal_paul> ah, thx 09:36 < stickies-v> LarryRuane: yes, exactly. I'd say in probably >99% of the time they should be synchronized, but if a new request comes in right before stopping the HTTP server, it's possible that the queue is empty and it looks like we can terminate but we actually still need to process that last-minute request 09:38 < stickies-v> so, there's a bit of overlap with the next question but it's still worth looking at separately: 09:38 < stickies-v> 3. What's the purpose of `g_requests`? Can you think of any alternative approaches that would achieve the same goal? 09:38 < LarryRuane> some requests can take a long time, right? like `gettxout`? 09:39 < stickies-v> LarryRuane: yes, but that's not really the issue here. Once a request is added onto `g_work_queue`, it will prevent the worker threads from terminating. So we wouldn't terminate the HTTP server prematurely 09:40 < svav> Does the g of g_requests stand for global? 09:40 < LarryRuane> i know the convention is that the `g_` means it's a global variable (so they're easier to identify when we want to assassinate them later) 09:40 < stickies-v> it's just that libevent requires there to be no unhandled requests when we call `evhttp_free(eventHTTP)`, which we need to ensure ourselves 09:40 < stickies-v> svav: yes! 09:43 < stickies-v> so `g_requests` simply keeps track of all the `evhttp_request` objects created by libevent, so we can easily keep track of whether or not they're all destroyed before we destroy `eventHTTP` 09:44 < stickies-v> I see two alternative solutions: we could use a lock for almost the entire duration of `http_request_cb` to ensure that no requests are being processed to be put in the `g_work_queue`, but that would be quite expensive 09:45 < stickies-v> a more elegant approach is that instead of tracking all the `evhttp_request` objects (or well, pointers to them), we could just keep a simple counter on how many requests we haven't yet handled, as discussed here: https://github.com/bitcoin/bitcoin/pull/26742#discussion_r1063664153 09:45 < rozehnal_paul> i was curious what the cb stood for in 'http_request_bc' 09:46 < stickies-v> (however, follow up PRs would benefit from tracking the actual requests instead of a counter) 09:46 < stickies-v> rozehnal_paul: it stands for callback 09:46 < stickies-v> https://en.wikipedia.org/wiki/Callback_(computer_programming) 09:46 < stickies-v> 4. Which (smallest possible) part of the code change in this PR is responsible for the drastic performance speedup in `feature_abortnode.py`, and why is that making it faster? 09:47 < stickies-v> (Yaz - now we're dealing with your question at the beginning of the review club!) 09:47 < rozehnal_paul> stickies-v is it the use of the atomic counter? 09:47 < stickies-v> rozehnal_paul: is that a response to the question of the performance speedup? 09:48 < Yaz> Thank you for the heads up (y) (y) 09:49 < rozehnal_paul> yes 09:49 < stickies-v> then, no. the PR doesn't use an atomic counter, that's just something I suggested but is not implemented (because we need to track the actual requests in a follow up PR, so fjahr would rather not change that again) 09:51 < rozehnal_paul> now we dont wait for a timeout 09:51 < rozehnal_paul> https://github.com/bitcoin/bitcoin/pull/26742#issuecomment-1375580720 09:52 < glozow> https://github.com/bitcoin/bitcoin/pull/26742/files#diff-63c8cb9c9dd61d50d59afd5c39914e1c259f8743030b637a7896a0746c851ef1R493 ? 09:52 < stickies-v> rozehnal_paul: yes, that's what it boils down to. but why don't we wait for a timeout anymore? 09:52 < stickies-v> glozow: are you referring to the addition of `event_base_once`? 09:53 < svav> It's the change to the way StopHTTPServer() works 09:53 < svav> Now, as soon as all worked have finished executing their tasks, evhttp_free(eventHTTP) is called, destroying the eventHTTP HTTP server 09:53 < svav> all *workers* 09:54 < LarryRuane> svav: +1 09:54 < stickies-v> svav: almost, but not 100% 09:54 < svav> ok enlighten me 09:55 < stickies-v> the majority of the code in this PR is to make it go from "as soon as all the workers have finished executing their tasks" to "as soon as all the `evhttp_request` objects created by libevent have been destroyed 09:55 < stickies-v> in case of the former, this PR could have been limited to just moving `if (g_thread_http.joinable()) g_thread_http.join();` a few lines down, after `evhttp_free(eventHTTP)` has been called (https://github.com/bitcoin-core-review-club/bitcoin/commit/6bd3394c80d2f11ef30c671b03c38985f72df44c#diff-63c8cb9c9dd61d50d59afd5c39914e1c259f8743030b637a7896a0746c851ef1L491) 09:56 < stickies-v> (you can easily verify this yourself by making just that small change on master, and running `feature_abortnode.py`) 09:57 < stickies-v> BUT we may encounter the edge case that we call `evhttp_free(eventHTTP)` before all `evhttp_request` objects have been destroyed, which libevent does not allow (I'm not sure if it leads to a crash, UB, or anything else) 09:57 < LarryRuane> so at line 500 (in the new code), we do call `join()`, is that path not normally taken (only if `eventBase` is not null)? 09:58 < svav> Re Q6 I would just like to mention that a mutex is analogous to a rubber chicken being used in a meeting which people have to be holding to allow them to talk :') 09:58 < stickies-v> `eventBase` is never expected to be null, afaict 09:58 < stickies-v> svav: hahahahahaha please create a PR to update the documentation 09:59 < stickies-v> does anyone know *why* just switching those few lines leads to such a performance improvement? 10:00 < svav> Is it something to do with the number of processes that need to be monitored? 10:00 < stickies-v> svav: I don't think so 10:01 < codo> My understanding was it closes network connections so the do not linger idle. 10:01 < LarryRuane> oh wow, so `GlobalMutex` behaves exactly like `Mutex` but this is sort of a documentation thing? 10:01 < stickies-v> `g_thread_http` is the thread in which we run the HTTP server, and even though all the `evhttp_request`s may be handled, connections to the HTTP server can still be open, albeit idle. Calling `g_thread_http.join()` will not return until also all idle connections are closed 10:02 < stickies-v> calling `evhttp_free(eventHTTP)` however, will forcefully destroy the HTTP server, cleaning up all idle connections too 10:02 < stickies-v> so `g_thread_http.join()` now returns immediately 10:02 < stickies-v> hope that makes sense - we're at time now so I'll close it up here but feel free to keep discussing here, of course 10:02 < stickies-v> thank you all for joining the conversation! 10:03 < stickies-v> #endmeeting 10:03 < codo> Thank you stickies-v 10:03 < LarryRuane> stickies-v: thanks! great session! 10:03 < svav> Thanks stickies-v and all! 10:03 < rozehnal_paul> thanks! 10:04 < glozow> thanks stickies-v! 10:04 < rozehnal_paul> does anyone have any off-hand links, so i can learn more about core & http, higher-level stuff? 10:05 < d33r_gee> thanks all 10:05 < Yaz> Thank you!\ 10:05 < stickies-v> next week LarryRuane is hosting, hope to see everyone back then! 10:06 < b_101> rozehnal_paul: +1 10:06 -!- d33r_gee [~d33r_gee@45-27-31-99.lightspeed.sntcca.sbcglobal.net] has quit [Quit: Connection closed] 10:06 -!- Yaz [~Yaz@gw81-151.jcsfiberlink.net] has quit [Quit: Connection closed] 10:06 -!- oldgoat5 [~oldgoat5@c-75-75-19-123.hsd1.va.comcast.net] has joined #bitcoin-core-pr-reviews 10:06 < effexzi> Thanks every1 10:06 < emzy> thank you stickies-v and all 10:07 < svav> rozenhal_paul see Coding and Development section at http://www.webref.eu/bitcoin-and-cryptocurrencies.php 10:07 < rozehnal_paul> thanks svav b_101 10:07 < b_101> thanks everyone, so sorry I was late 10:08 < codo> Will next weeks meeting appear on https://bitcoincore.reviews/ ? It is lacking under 'Upcoming Meetings'. 10:09 < stickies-v> b_101: no problem, you can always re-read the logs on https://bitcoincore.reviews - today's logs will be uploaded shortly 10:09 < b_101> rozehnal_paul: I would also try: https://github.com/chaincodelabs/onboarding-to-bitcoin-core 10:10 < stickies-v> codo: yes, once LarryRuane has picked his PR it will be added to the website. I usually post an update here in the channel when that's done, and you can also keep an eye on https://twitter.com/bitcoinreviews 10:11 < codo> ok 10:13 < stickies-v> codo: woops sorry I meant this twitter account: https://twitter.com/BitcoinCorePRs 10:17 < b_101> stickies-v: thx! 10:21 -!- rozehnal_paul [~rozehnal_@142.157.221.175] has quit [Quit: Connection closed] 10:56 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has joined #bitcoin-core-pr-reviews 10:56 -!- kmartin7 [~kmartin@5401DBB6.dsl.pool.telekom.hu] has joined #bitcoin-core-pr-reviews 10:58 -!- svav [~svav@82-69-86-143.dsl.in-addr.zen.co.uk] has quit [Quit: Connection closed] 11:11 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has quit [Ping timeout: 268 seconds] 11:18 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has joined #bitcoin-core-pr-reviews 11:31 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.] 11:33 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has joined #bitcoin-core-pr-reviews 11:34 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has quit [Client Quit] 11:36 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has joined #bitcoin-core-pr-reviews 12:07 -!- Talkless [~Talkless@mail.dargis.net] has quit [Quit: Konversation terminated!] 12:09 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has joined #bitcoin-core-pr-reviews 12:12 -!- MrFrancis [~MrFrancis@2001:8a0:fa4c:901:4c4c:f4a6:e352:5123] has quit [Ping timeout: 248 seconds] 12:18 -!- codo [~codeautis@user/codeautist] has left #bitcoin-core-pr-reviews [nil] 12:33 -!- effexzi [uid474242@id-474242.ilkley.irccloud.com] has quit [Quit: Connection closed for inactivity] 12:33 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has quit [Ping timeout: 252 seconds] 12:41 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has joined #bitcoin-core-pr-reviews 13:04 -!- ___nick___ [~quassel@cpc68289-cdif17-2-0-cust317.5-1.cable.virginm.net] has quit [Ping timeout: 256 seconds] 13:06 -!- oldgoat5 [~oldgoat5@c-75-75-19-123.hsd1.va.comcast.net] has quit [Quit: Connection closed] 13:16 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Remote host closed the connection] 13:16 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 13:21 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 256 seconds] 13:49 -!- kmartin7 [~kmartin@5401DBB6.dsl.pool.telekom.hu] has quit [Quit: Connection closed] 13:50 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 13:55 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 264 seconds] 14:01 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 14:06 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 260 seconds] 14:07 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 14:11 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 260 seconds] 14:18 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 14:22 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 246 seconds] 14:24 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 14:28 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 260 seconds] 14:28 -!- __gotcha [~Thunderbi@79.132.249.86] has quit [Ping timeout: 260 seconds] 14:41 -!- __gotcha [~Thunderbi@79.132.249.86] has joined #bitcoin-core-pr-reviews 14:43 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has quit [Ping timeout: 248 seconds] 14:46 -!- __gotcha [~Thunderbi@79.132.249.86] has quit [Ping timeout: 272 seconds] 14:47 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has joined #bitcoin-core-pr-reviews 14:54 -!- b_101_ [~robert@216.144.236.70] has joined #bitcoin-core-pr-reviews 14:56 -!- b_101 [~robert@216.144.236.70] has quit [Ping timeout: 268 seconds] 14:59 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 15:01 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has quit [Ping timeout: 252 seconds] 15:03 -!- jonatack1 [~jonatack@user/jonatack] has joined #bitcoin-core-pr-reviews 15:04 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 265 seconds] 15:05 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 15:05 -!- jon_atack [~jonatack@user/jonatack] has quit [Ping timeout: 260 seconds] 15:10 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 260 seconds] 15:11 -!- Zenton [~user@user/zenton] has quit [Ping timeout: 260 seconds] 15:16 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 15:21 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 256 seconds] 15:27 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 15:32 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 246 seconds] 15:38 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 15:43 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 264 seconds] 15:45 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 15:47 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has joined #bitcoin-core-pr-reviews 15:51 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 260 seconds] 15:59 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 16:04 -!- FrancisMr [~MrFrancis@2001:8a0:fa4c:901:39b5:ea08:d1d8:ad0b] has quit [Remote host closed the connection] 16:09 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 265 seconds] 16:09 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 16:14 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 260 seconds] 16:21 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has joined #bitcoin-core-pr-reviews 16:54 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:b088:22f9:323c:b33d] has quit [Ping timeout: 246 seconds] 17:00 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 17:05 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 260 seconds] 17:07 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 17:18 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 260 seconds] 17:29 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 17:34 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 17:35 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 17:40 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 248 seconds] 17:55 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 18:02 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 264 seconds] 18:03 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 18:07 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 260 seconds] 18:42 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 18:46 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 18:53 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 18:58 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 268 seconds] 18:59 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 19:03 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 256 seconds] 19:10 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 19:14 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 252 seconds] 19:16 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 19:23 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 19:30 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 19:34 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 264 seconds] 19:36 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 19:41 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 256 seconds] 19:47 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 19:52 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 272 seconds] 19:53 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 19:57 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 264 seconds] 20:04 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 20:09 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 268 seconds] 20:10 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:14 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 20:21 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:25 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 20:27 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:31 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 256 seconds] 20:32 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:37 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 20:43 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:47 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 256 seconds] 20:49 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:54 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 20:54 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 20:58 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 246 seconds] 21:05 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 21:09 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 260 seconds] 21:11 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 21:18 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 260 seconds] 21:24 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 21:29 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 21:30 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 21:35 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 246 seconds] 21:35 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 21:40 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 260 seconds] 21:47 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 21:48 -!- hashfunc [~user@2601:5c0:c280:7090:d84f:a7ca:8dff:844e] has joined #bitcoin-core-pr-reviews 21:51 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 264 seconds] 21:58 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 22:02 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 252 seconds] 22:04 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 22:08 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 248 seconds] 22:14 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 22:19 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 248 seconds] 22:21 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 22:25 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 252 seconds] 22:31 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 22:36 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 246 seconds] 22:37 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 22:47 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 22:48 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 22:53 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 248 seconds] 22:59 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 23:04 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 256 seconds] 23:05 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 23:10 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 252 seconds] 23:16 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 23:21 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 260 seconds] 23:28 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 23:33 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 264 seconds] 23:34 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 23:38 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 265 seconds] 23:45 -!- brunoerg [~brunoerg@187.183.43.178] has joined #bitcoin-core-pr-reviews 23:49 -!- hashfunc [~user@2601:5c0:c280:7090:d84f:a7ca:8dff:844e] has quit [Remote host closed the connection] 23:49 -!- hashfunc [~user@2601:5c0:c280:7090:d84f:a7ca:8dff:844e] has joined #bitcoin-core-pr-reviews 23:49 -!- brunoerg [~brunoerg@187.183.43.178] has quit [Ping timeout: 265 seconds] 23:51 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has joined #bitcoin-core-pr-reviews 23:54 -!- hashfunc [~user@2601:5c0:c280:7090:d84f:a7ca:8dff:844e] has quit [Ping timeout: 252 seconds] 23:55 -!- brunoerg [~brunoerg@2804:14d:5281:8ae2:24cc:5162:9e0f:5ab0] has quit [Ping timeout: 252 seconds] --- Log closed Thu Jan 12 00:00:13 2023