Comments (5)
I have confirmed that this happened to me because I was running in the Erlang shell and by chance happened to make a typo at just the right moment in the sequence of commands. The typo caused an exception, which the shell didn't catch. The shell fakes a lot of things, trying to make the shell process seem persistent. In fact, the process died and was faked to look like it stayed around. Since the original process that opened the "efile" port and cached it in the process dictionary died, the port went away, leaving us in this state.
This is very unlikely to happen in Riak, as making that port go away would require something catastrophic. Yet, it might be a good idea to do away with this hack anyway.
from bitcask.
A fix for this issue here #189
from bitcask.
Hrm, I disagree with Bitcask using any operation that gets redirected to file_server_2: it sucks, plain and simple. Any other OTP app can send a spew of requests to it, then Bitcask's requests get stuck behind it, and we're back in the same serialized pickle.
I agree that noodling around in the shell can cause problems with the port "cache" in the process dictionary. However, AFAIK, any exception that invalidates the cached port will also kill the owning vnode process, so the problem effectively doesn't happen. Having said that, #189 is a good bit of paranoia.
from bitcask.
#189 has been merged, closing
from bitcask.
Agree. In the end I just detected the stale cached port and reloaded. This will likely only help people playing with Bitcask on a shell, but paranoia is good.
from bitcask.
Related Issues (20)
- bitcask NIF doesn't compile cleanly on OS X 10.10 [JIRA: RIAK-1574] HOT 2
- Startup crash trying to read key from corrupted data file [JIRA: RIAK-1819] HOT 5
- Repeated crashes during merge operations [JIRA: RIAK-1903] HOT 4
- Can't manually force a merge, error - efile_driver_unavailable [JIRA: RIAK-2036] HOT 5
- Include Bitcask data file count in merge info messages. [JIRA: RIAK-2039]
- Potential Process Leak [JIRA: RIAK-2227] HOT 2
- Lock file staleness check could be more robust [JIRA: RIAK-2230]
- question about read concurrency [JIRA: RIAK-2330] HOT 1
- Operation aborts if any file contains a corrupt key [JIRA: RIAK-2371] HOT 1
- rebar abort [JIRA: RIAK-2485] HOT 5
- Errors in `merge_single_tombstone` and `open_file` `append` mode [JIRA: RIAK-2733] HOT 2
- bitcask:merge/1 keeps file descriptors of deleted files open [JIRA: RIAK-2814] HOT 2
- File Open behaves differently between NIF and Erlang modes [JIRA: RIAK-2895] HOT 1
- bitcask failed to merge.merge_locked,locked
- c_src/bitcask_nifs.c: pair of bad % specifiers ?
- Build broken with OTP 21: use of the deprecated get_stacktrace/0 in dependency meck HOT 3
- Call bitcask_merge_worker:merge(DirName) is error
- How to run YCSB workload for bitcask?
- In the bitcask intro paper we see it being mentioned that bitcask is able to support datasets larger than 10 X system memory. I am trying to understand how? HOT 4
- Recreate hintfile HOT 2
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 bitcask.