Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Jan Kotek
    @jankotek
    @DarioRomano I no longer support that version. But feel free to just remove all references to sun.nio.ch. It should be optional for some type of storage.
    Bradley L Schatz
    @blschatz
    db.close() doesnt seem to work correctly. I'm getting the following exception on close, regardless of using mmap, filechannel, or the default.
    java.nio.file.FileSystemException: I:\xxxx: The process cannot access the file because it is being used by another process.
    This is using 3.0.7 on windows x64
    Any suggestions? Thanks!
    Jan Kotek
    @jankotek
    @blschatz most likely file locking. Storage was opened twice. Also on Windows file might remain locked, even after JVM process exits.
    Bradley L Schatz
    @blschatz
    Thanks Jan! It turned out to be I was missing a close in an earlier unit test.
    FYI mmap is working for me on Win10/Java8.
    Organ bank from sector 7G
    @testchamber1_twitter
    Hi there! Has anyone tried to use the expireOverflow feature successfully? The problem I'm facing is that the only function that retrieves the data from the disk memory is the memoryMap.get(some_key). If I call a function like underlyingMap.keys, underlyingMap.values, etcetc they come back empty UNLESS the data was refreshed recently. Is this expected? thanks in advance.
    liuyibox
    @liuyibox
    Hey I recently work on an android project have to use org.mapdb:mapdb:jar:3.0.7, but I got Method name '%%%verify$mapdb' in class 'org.mapdb.DB$Maker' cannot be represented in dex format. build error message. I saw this happen before, I'm wondering if there are any progresses on this problem?
    liuyibox
    @liuyibox
    If I guess correctly, in order to use mapdb.jar on android, the java source files and kotlin source files of MapDB need to be specified separately when compiling them into class/dex files.
    Jan Kotek
    @jankotek
    @liuyibox one method in kotlin has strange name in order to obfuscate it. It is not problem in JVM, but on Android. I will have to release new minor version for that
    nate8628
    @nate8628
    db.treeMap can't do batch import anymore? I'm trying to use the example from the documentation but createFrom() is an invalid method.
    nate8628
    @nate8628
    @jankotek
    SJS830
    @SJS830
    How do you serialize an entire database to a byte array?
    I want to save my databases to amazon s3 without storing them in a file
    Or is there another database that is better suited for that
    Nuwan Sanjeewa Abeysiriwardana
    @nuwansa
    Hi , NavigableSet.headSet with inclusive 'true' is not working, also tailSet with inclusive 'false' not working too. has anyone else experience this. I'm using latest version of mapdb 3.0.8
    to explain further , NavigableSet.headSet with inclusive 'true' not including the equal value in the result set.
    NavigableSet. tailSet with inclusive 'false' including the equal value in the result set
    Jan Kotek
    @jankotek
    @nuwansa it should work, there are unit tests for this case. Maybe you are using some exotic data type where 'equal' is not correctly handled? what is your serializer and config?
    Nuwan Sanjeewa Abeysiriwardana
    @nuwansa
    @jankotek this is the initialization code
    this.db
                .treeSet("map")
                .serializer(new SerializerArrayTuple(Serializer.BIG_DECIMAL, Serializer.LONG))
                .counterEnable()
                .createOrOpen();
    Jan Kotek
    @jankotek
    That should work
    I will look into it jankotek/mapdb#980
    Nuwan Sanjeewa Abeysiriwardana
    @nuwansa
    @jankotek thank you very much
    Qi Chen
    @chenqi0805
    @jankotek Hi, is there plan of re-support encryption API for the DBMaker? If yes, what will be the encryption standards?
    Jan Kotek
    @jankotek
    @chenqi0805 yes, I would like to support encryption. It will be done by block encryption (entire store) or via serializers (only part of data such as Map values)
    Qi Chen
    @chenqi0805

    @jankotek QUES on the hashmap or treemap with nested data structure. With the following code block:

            HTreeMap<String, List<String>> map = (HTreeMap<String, List<String>>) DBMaker.fileDB("map").make().hashMap("map").createOrOpen();
            for (int i = 0; i< 10; i++) {
                final int finalI = i;
                for (int j = 0; j< 10; j++) {
                    final int finalJ = j;
                    map.compute(String.valueOf(finalI), (key, value) -> {
                        if (value == null) {
                            value = new ArrayList<>();
                        }
                        value.add(String.format("%d_%d", finalI, finalJ));
                        return value;
                    });
                }
            }

    It falls into deadloop. Instead, I need to copy the value and then return the modified new copy to make it work.

    HTreeMap<String, List<String>> map = (HTreeMap<String, List<String>>) DBMaker.fileDB("map").make().hashMap("map").createOrOpen();
            for (int i = 0; i< 10; i++) {
                final int finalI = i;
                for (int j = 0; j< 10; j++) {
                    final int finalJ = j;
                    map.compute(String.valueOf(finalI), (key, value) -> {
                        final List<String> newValue;
                        if (value == null) {
                            newValue = new ArrayList<>();
                        } else {
                            newValue = new ArrayList<>(value);
                        }
                        newValue.add(String.format("%d_%d", finalI, finalJ));
                        return newValue;
                    });
                }
            }

    Is it a bug or it is expected? I think this is not an issue with in-memory counterpart (e.g. concurrentHashMap)

    1 reply
    Qi Chen
    @chenqi0805

    Hi, Another question on how expire works in MapDB. The following snippet does not work

    @Test
        public void testExpiration() throws InterruptedException {
            HTreeMap<String, String> map = (HTreeMap<String, String>) DBMaker
    //                .fileDB("map").fileDeleteAfterClose()
                    .memoryDB()
                    .make().hashMap("map")
                    .expireAfterCreate(10)
                    .createOrOpen();
            map.put("a", "b");
            Thread.sleep(4000);
            assertNull(map.get("a"));
            map.close();
        }

    Did I misunderstand how expiration works?

    svukadin85
    @svukadin85
    Hi
    where are mapdb kotlin source files found?