hhu-bsinfo / dxram Goto Github PK
View Code? Open in Web Editor NEWA distributed in-memory key-value storage for billions of small objects.
Home Page: https://dxram.io
License: GNU General Public License v3.0
A distributed in-memory key-value storage for billions of small objects.
Home Page: https://dxram.io
License: GNU General Public License v3.0
Separate repository with source + instructions
The job service needs some refactoring and testing. We haven't used it for more than a year and I assume some things are currently broken.
There is also an important TODO that needs to be taken care of to avoid blocking message handlers:
"use event system here to avoid blocking the network thread for too long?" (in JobService, incomingJobEventTriggeredMessage)
Implement a lock free version of a work stealing queue
ChunkService:
If a remove message arrives from a remote node, the message handler has to send a request to the superpeer overlay to remove the chunk from the b-tree. However, the response to that request cannot be processed because it requires another message handler. If the message handler count is set to 1, no handler is available and the request will always fail.
Solution:
Put remove operations as "jobs" (not related to the job system) into a queue and handle them by a separate remove thread (-> separate service: ChunkRemoveService). On incoming remove messages, just put a job into the queue and return. The job gets processed by the dedicated remove thread to avoid sending the request in a message handler and blocking it
Reserve
operation returns a LID (i.e. higher 16 bits are 0) without NID (memory is allocated later via createReserved
). However create
or even createLocal
does return CIDs with the valid NID.
Expected behavior:
reserve
does return CIDs not just NID, otherwise it cannot be used by remote peers.
Similar to a DXRAM service, a test module can access components to execute tests to verify the component is working. A main class (DXRAMMainTest) can call these test modules by providing parameters on execution (e.g. ChunkTest).
Barriers seem to be implemented using dynamic message receivers, which block until a specific message arrives. Whenever someone creates two of them, the second overwrites the firsts subscription. In addition a semaphore is used, which results in blocking one of the available message handler threads.
dxram/src/main/java/de/hhu/bsinfo/dxram/lookup/overlay/OverlayPeer.java
Lines 813 to 844 in 70d6f34
Looks like you got a bug or some weird code in DynamicMultiByteUnsignedInteger
in the below method. The pos
is never changed, the while
condition is always true. And I think that the if
condition is always true as well because I don't see how the operation of x & 0x80
will result in a value equal to 1
public static long fromMultiByte(final byte[] p_array, final int p_arrayOffset) {
int pos = 0;
long ret = 0;
while (pos < 9) {
ret |= (long) (p_array[p_arrayOffset + pos] & 0x7F) << 7 * pos;
if ((p_array[p_arrayOffset + pos] & 0x80) != 1) {
break;
}
}
return ret;
}
Create MonitorComponent and MonitorService to get CPU load, RAM usage, network load etc. (use and code of the bachelor thesis)
Redirect log messages to network and output on the terminal
In Class Create and CreateLocal are the following methods:
`
public int createSizes(final long[] p_cids, final int p_offset, int... p_sizes){...}
public int createSizes(final long[] p_cids, int... p_sizes){...}
`
It compiles but when you try to you it java cannot reference a method because both will fit.
Example:
...createSizes( ..., (int) 3, (int) 4)
In this case java dont know which method i want to use because two Integer could be interpreted as int and an array with one entry or as an array with two entries.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.