Comments (4)
Going through and cleaning up the issue tracker.
Not sure I understand, tryphe.
Explanation?
Progress?
:)
from clams.
RPCExecutor (I think that's the name) should run within its own context, but still blocks the calling thread, in turn making things cumbersome instead of speeding them up. It's a fundamental oversight with bitcoin-qt to just make multiple contexts that wait on each other. What we want is an execution tree, while the current implementation reduces us to a single point of execution at most of any given time.
We need mutexes for specific things and not just one mutex for the entire DB. This is why fixes like #183 work without consequence (hopefully). Unfortunately this involves determining which resources are needed for certain blocks of code and making custom mutexes for each of those relevant blocks of code. In other words, a lot of work. Probably too much work for anyone who didn't design this implementation in the first place.
A better design would be a set of signals from a DB container, with its own thread context, to the GUI, that way the GUI won't need to block for any reason. In other words, we want the GUI to be given data by the DB when it's finished doing its own thing, not force the GUI to wait to read the DB. You would still need block specific mutex locks like I mentioned above but I feel like they would be easier to deal with inside a relevant DB container than from the GUI.
I don't really feel like this is worth doing without more with the GUI, but at the same time I feel like the current design holds us back from doing anything useful with the GUI because it's very heavy to add anything.
from clams.
Thanks for the explanation, tryphe :)
Going to close this then - can I get you to create a new issue outlining the design ideas/decisions for such an over-arching GUI update.
Something that can get reviewed and discussed by dooglus, xploited, etc.?
from clams.
Thanks - I feel like this is something that eventually needs to be done, but I have no experience with levelDB. Without some major guidance I feel like I'd be running backwards trying to introduce parallelism on something I don't understand.
Most modern DB libraries can support parallelism in some way. Maybe there is a way around this by using something like https://github.com/rescrv/HyperLevelDB? This might avoid our nightmare scenario of having to revamp a bunch of mutexes to be as fast as possible for their individual read/write scenarios. I'm just not sure if it will add too much complexity or help us in ways that we need. I'm a database newb =p
from clams.
Related Issues (20)
- khashier block explorer isn't updating HOT 5
- Can't import wallet when password contains spaces? HOT 1
- clamav and clams: conflicting binary names /usr/bin/clamd
- Clam fail to build HOT 1
- Please help me guys, Sync issues HOT 9
- clamd 2.0.0-rc1 blockchain fork HOT 7
- -mininput fails to ignore some outputs HOT 1
- Change Name to BitcoinLitecoinAndDogecoinButNotNecessarilyInThatOrderClams HOT 7
- Bootstrap import ignores >300MB worth of already downloaded blk0001.dat HOT 11
- Status: conflicted, broadcast through 11 node(s)
- pre release v2.0.0-rc1 HOT 8
- Problems with RC2 HOT 2
- Improve homepage HOT 2
- Sendmany not working HOT 1
- clamd crashes (and freezes ubuntu EC2 box) HOT 1
- Compiling fails with recent openssl versions. HOT 9
- Cannot validate block HOT 2
- clamour not being set
- protected function HOT 1
- AcceptToMemoryPool : not enough fees
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clams.