2011/6/9 Jingwei <jingw...@gmail.com>:
> Hi Tomislav,
>
> There is a bug in krati, which prevents krati from handling the number
> of keys greater than 1 << 27 (128 million) in DynamicDataStore and
> DynamicDataSet. You have keys more than 1500 million. This perhaps
> caused java.nio.BufferUnderflowException. I am currently working on
> this issue and trying to scale the store to handle the number of keys
> up to Integer.MAX_VALUE.
OK. I understand.
>
> In your case, if the length of key is small, you can use
> StaticDataStore with a fixed capacity such as 100,000,000
>
> _store = new StaticDataStore(storeDir, 100000000, new
> ChannelSegmentFactory())
I've tried your suggestion and got
Caused by: java.io.IOException: Capacity expected: 67108864 not 100000000
at krati.store.StaticDataStore.<init>(StaticDataStore.java:197)
at krati.store.StaticDataStore.<init>(StaticDataStore.java:59)
Does this mean that length of the keys is too big?
Tomislav
2011/6/13 Jingwei <jingw...@gmail.com>:
> Hi Tomislav,
>
> In Krati, StaticDataStore, DynamicDataStore and IndexedDataStore are
> not interchangeable at present. This means that once you have chosen a
> store type, you will have to keep using that type of store.
>
> The store you have created via DynamicDataStore is corrupted due to
> the bug mentioned in my previous reply. If you switch to
> StaticDataStore, you will need to recreate the store from scratch.
Yes, I've figured as much. So I've started rebuilding of store from
scratch, but rebuilding was much slower then with DynamicDataStore
(rebuilding includes getting count objects for keys, increasing
counter value and putting it back to krati store) which is a problem
in 'live'/interactive mode of usage.
Tomislav