Skip to content

Commit f73d448

Browse files
authored
summaries 2017-06-08
1 parent e0233bc commit f73d448

File tree

1 file changed

+131
-0
lines changed

1 file changed

+131
-0
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
---
2+
title: IRC meeting summary for 2017-06-08
3+
permalink: /en/meetings/2017/06/08/
4+
name: 2017-06-08-meeting
5+
type: meetings
6+
layout: page
7+
lang: en
8+
version: 1
9+
---
10+
{% include _toc.html %}
11+
12+
- [Link to this week logs](https://botbot.me/freenode/bitcoin-core-dev/2017-06-08/?msg=86999215&page=2)
13+
- [Meeting minutes by meetbot](http://www.erisian.com.au/meetbot/bitcoin-core-dev/2017/bitcoin-core-dev.2017-06-08-19.00.html)
14+
15+
---
16+
17+
## Main topics
18+
19+
- Optimization: Calculate block hash less times
20+
- UI interaction with pertxout upgrade
21+
- crc32 leveldb 1.20
22+
23+
## Optimization: Calculate block hash less times
24+
25+
### background
26+
27+
Currently accepting a block at the tip hashes the header ~6 times. Jtimon has made PR [#10339][] to improve that situation. Wumpus did some benchmarks and it resulted in 26% less hashing operations.
28+
29+
### comments
30+
31+
Gmaxwell suggested to cache the hash in the block object, but Sipa prefered this solution. He considers adding more arguments to validation-specific functions less invasive than changing a primitive datastructure. Wumpus argues passing extra arguments is easier to reason about than extending primitive datastructures, however caching is always somewhat risky and error-prone. Wumpus thinks if it's not worth it performance wise we shouldn't do either.
32+
33+
Morcos wonders if the speedup is worth the tradeoff of making the code a little more complicated/involved. Gmaxwell brought the issue up as the repeated hashing is on the latency critical path for block propagation to the tune of maybe a millisecond. Codeshark prefers to sacrifice a little performance for better architecture.
34+
35+
Jtimon thinks people not agreeing with the concept should've made this clear earlier.
36+
37+
### conclusion
38+
39+
- Discuss further after the meeting and on PR [#10339][].
40+
41+
## UI interaction with pertxout upgrade
42+
43+
### background
44+
45+
PR [#10195][] which switched the chainstate database and its cache from a per-tx model to a per-txoutput model requires an upgrade process in the database which can take a couple of minutes on decent hardware or longer elsewhere. Sipa thinks this needs some GUI interaction to make it clear to users what's happening.
46+
47+
### comments
48+
49+
Jonasschnelli proposes to use `uiInterface.Progress`, however that doesn't allow you to interrupt the process. Users might want to delay the upgrade process to another time.
50+
51+
Luke-jr wonders what happens if you crash, run the old version, and later the new one again. Gmaxwell thinks the old version will tell you the database is corrupt and stop, but he hasn't tested it. He does think it's a case that should be handled.
52+
53+
Going back to an old version would require a reindex, something a pruned node can't do. There should be clear warnings in the release notes.
54+
55+
Sipa notes there's a trivial change that could be made to guarantee old versions will treat it as an empty database. One way of doing it would be to create a new database, however that would need twice the disk storage during the upgrade. The trivial way would be to set the record of the best block hash to something invalid.
56+
57+
### conclusion
58+
59+
- Jonasschnelli will work on the logging process, similar to VerifyDB.
60+
- Monitor disk usage during upgrade and do some more testing. Continue discussion based on those results.
61+
62+
## crc32 leveldb 1.20
63+
64+
### background
65+
66+
The most recent version of levelDB implements hardware accelerated crc32 for intel which is used for calculating checksums.
67+
68+
### comments
69+
70+
Sipa really dislikes the approach the developers of levelDB are using, which requires a separate object compiled with different flags and they're calling the new object without knowing the CPU supports it. Wumpus and Gmaxwell note compiling a separate object with special flags is standard and correct, however calling it without knowing whether the CPU supports it is not.
71+
72+
Jtimon proposes to open an issue on the levelDB github. Gmaxwell thinks it's better to just submit a fix, as opening an issue won't help much.
73+
74+
Cfields, who joined the meeting later, has a [fix ready](https://github.com/theuni/bitcoin/commit/2cb7dda13884e44105f33c16e7e2c1a9aed46295).
75+
76+
### conclusion
77+
78+
- Fix levelDB
79+
80+
## High priority review
81+
82+
- Sipa wants to add [#10148][] (Use non-atomic flushing with block replay) which will double the effective available dbcache.
83+
- Luke-jr has rebased [multiwallet][#8694].
84+
- Gmaxwell reminds everyone BlueMatt's caching change on [#10192][] is a 31% block connection speedup, and it needs review.
85+
86+
## Comic relief
87+
88+
{% highlight text %}
89+
9:45 cfields_ here!
90+
9:47 BlueMatt oh, i was supposed to mention cfields_ would be late
91+
9:47 cfields_ heh, thanks
92+
9:47 BlueMatt you're welcome :)
93+
94+
9:48 gmaxwell we should submit a fix, it should be trivial.
95+
9:48 cfields_ that's done already: https://github.com/theuni/bitcoin/commit/2cb7dda13884e44105f33c16e7e2c1a9aed46295
96+
9:48 sipa cfields_: oh!
97+
9:48 cfields_ or are you guys talking about something else?
98+
9:48 sipa probably not
99+
9:49 wumpus lol <long discussion> oh, cfields did it already
100+
{% endhighlight %}
101+
102+
## Participants
103+
104+
| IRC nick | Name/Nym |
105+
|-----------------|---------------------------|
106+
| jonasschnelli | [Jonas Schnelli][] |
107+
| sipa | [Pieter Wuille][] |
108+
| cfields | [Cory Fields][] |
109+
| luke-jr | [Luke Dashjr][] |
110+
| kanzure | [Bryan Bishop][] |
111+
| gmaxwell | [Gregory Maxwell][] |
112+
| wumpus | [Wladimir van der Laan][] |
113+
| morcos | [Alex Morcos][] |
114+
| sdaftuar | [Suhas Daftuar][] |
115+
| jtimon | [Jorge Timón][] |
116+
| BlueMatt | [Matt Corallo][] |
117+
| instagibbs | [Gregory Sanders][] |
118+
| achow101 | [Andrew Chow][] |
119+
| CodeShark | [Eric Lombrozo][] |
120+
121+
## Disclaimer
122+
123+
This summary was compiled without input from any of the participants in the discussion, so any errors are the fault of the summary author and not the discussion participants.
124+
125+
[#10148]: https://github.com/bitcoin/bitcoin/pull/10148
126+
[#10339]: https://github.com/bitcoin/bitcoin/pull/10339
127+
[#10195]: https://github.com/bitcoin/bitcoin/pull/10195
128+
[#8694]: https://github.com/bitcoin/bitcoin/pull/8694
129+
[#10192]: https://github.com/bitcoin/bitcoin/pull/10192
130+
131+
{% include _references.md %}

0 commit comments

Comments
 (0)