dain / leveldb

Port of LevelDB to Java

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cannot open table, No such file XYZ.sst

wolfposd opened this issue · comments

commented

Not sure if Bug or different LevelDB version. But in my DB there are no ...sst files only ...ldb files, so i get the following error:

java.lang.RuntimeException: Could not open table 3
at org.iq80.leveldb.impl.TableCache.getTable(TableCache.java:97)
at org.iq80.leveldb.impl.TableCache.newIterator(TableCache.java:78)
at org.iq80.leveldb.impl.TableCache.newIterator(TableCache.java:73)
at org.iq80.leveldb.impl.Version.getLevel0Files(Version.java:146)
at org.iq80.leveldb.impl.DbImpl.internalIterator(DbImpl.java:776)
at org.iq80.leveldb.impl.DbImpl.iterator(DbImpl.java:742)
at org.iq80.leveldb.impl.DbImpl.iterator(DbImpl.java:733)
at org.iq80.leveldb.impl.DbImpl.iterator(DbImpl.java:1)
at java.lang.Iterable.forEach(Iterable.java:74)
at com.github.wolfposd.StartupLevelDB.main(StartupLevelDB.java:30)
Caused by: java.io.FileNotFoundException: mydatabase.db/000003.sst (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.(FileInputStream.java:138)
at org.iq80.leveldb.impl.TableCache$TableAndFile.(TableCache.java:122)
at org.iq80.leveldb.impl.TableCache$TableAndFile.(TableCache.java:117)
at org.iq80.leveldb.impl.TableCache$2.load(TableCache.java:66)
at org.iq80.leveldb.impl.TableCache$2.load(TableCache.java:1)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3527)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2319)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2282)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197)
at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
at org.iq80.leveldb.impl.TableCache.getTable(TableCache.java:90)
... 9 more

However, when i change org.iq80.leveldb.impl.Filename.java#59
from "sst" to "ldb" it works fine

Hi @wolfposd. I think your issue is due a different leveldb version. Current repository version only supports sst files but this was changed in google/leveldb@0b9a89f (Release LevelDB 1.14 release). I think it was due an extension conflict in Windows. You can find more info here.

Same problem with org.fusesource.leveldbjni with windows 10.
I tried Version 1.8, 1.8-redhat.003, 1.13-redhat.002.
I only need Readonly-Access to the leveldb, so my workaround is, copying all files and rename *.ldb to *.sst

Exact same error? I was able to read my .ldb files when using that library.

Not exactly the same error but:
org.fusesource.leveldbjni.internal.NativeDB$DBException: Corruption: 7 missing files; e.g.: C:\Users\zimmermann\AppData\Local\Temp\leveldb7307729845232549361/000005.sst at org.fusesource.leveldbjni.internal.NativeDB.checkStatus(NativeDB.java:200) ~[leveldbjni-all-1.8.jar:1.8] at org.fusesource.leveldbjni.internal.NativeDB.open(NativeDB.java:218) ~[leveldbjni-all-1.8.jar:1.8] at org.fusesource.leveldbjni.JniDBFactory.open(JniDBFactory.java:168) ~[leveldbjni-all-1.8.jar:1.8] at com.zimmerbell.repaper.sources.MomentumSource.updateFromLevelDB(MomentumSource.java:85) ~[classes/:?] at com.zimmerbell.repaper.sources.MomentumSource.update(MomentumSource.java:69) ~[classes/:?] at com.zimmerbell.repaper.Repaper.update(Repaper.java:243) [classes/:?] at com.zimmerbell.repaper.Repaper.<init>(Repaper.java:96) [classes/:?] at com.zimmerbell.repaper.Repaper.main(Repaper.java:84) [classes/:?]

It sounds like you were renaming files when you were making a hack. Perhaps if you redownload the DB it will resolve the issue? If not, could you post your brief code grabbing an itr?

I quickly wrote a test that opens the leveldb of (a copy of) your chrome profile:
https://github.com/noooz/repaper/blob/master/src/test/java/com/zimmerbell/repaper/ReadLevelDBTest.java
It fails, if you remove the renaming in line 26.

I have the same problem @dain Can you help us?