Database broken after restart

Hi,
after a routine restart, my YaCy database seems broken and instance is refusing to start.
Previously, when this happened, deleting the database helped, but now, I got aroud 16M of pages indexed over a year and I don’t want to delete it.
Do you have some experience/hint, how to solve the situation, how to heal the database without deleting it?
Thanks for any advice!
Part of log follows:

HeapReader * saturation of responseHeader.heap.1B2M2Y8AsgTp.idx: keylength = 5, vallength = 8, size = 152371
java.io.IOException: Negative seek offset 
I 2022/09/20 10:26:21 HeapReader * BLOB /usr/home/yacy/yacy-latest/DATA/HTCACHE/file.array/hnDmB2jAOA0r.20220916092823638.blob: me
I 2022/09/20 10:26:21 BLOBArray * merging text.index.20220915105950080.blob with text.index.20220915110020234.blob 
I 2022/09/20 10:26:21 RICELL-shrink1 * unmountBestMatch(2.0, 67108864) 
I 2022/09/20 10:26:21 IODispatcher * appended merge job of files text.index.20220915110023241.blob, text.index.20220915110059349.b
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
ck.unmountBestMatch(ArrayStack.java:324) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ck.unmountBestMatch(ArrayStack.java:324) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ck.unmountBestMatch(ArrayStack.java:324) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ck.unmountBestMatch(ArrayStack.java:324) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
I 2022/09/20 10:26:21 HeapReader * close HeapFile text.index.20220916090653902.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
I 2022/09/20 10:26:24 HeapReader * saturation of hnDmB2jAOA0r.20220916091234234.blob.PRe0VqRSLKuA.idx: keylength = 3, vallength =
220916091234234.blob. 
I 2022/09/20 10:26:24 HeapReader * close HeapFile text.index.20220916100830510.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
I 2022/09/20 10:26:24 BLOBArray * merging text.index.20220916100827383.blob with text.index.20220916100830510.blob 
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
I 2022/09/20 10:26:24 HeapReader * close HeapFile text.index.20220916101204129.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
I 2022/09/20 10:26:24 HeapReader * using a dump of the index of /usr/home/yacy/yacy-latest/DATA/HTCACHE/file.array/hnDmB2jAOA0r.20
I 2022/09/20 10:26:27 HeapReader * saturation of hnDmB2jAOA0r.20220916044017866.blob.kWUbWNoT_b_P.idx: keylength = 3, vallength =
220916044017866.blob. 
I 2022/09/20 10:26:27 HeapReader * using a dump of the index of /usr/home/yacy/yacy-latest/DATA/HTCACHE/file.array/hnDmB2jAOA0r.20
hThread.run(IndexCell.java:123) 
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
lob to text.index.20220920082627618.blob 
I 2022/09/20 10:26:27 HeapReader * close HeapFile text.index.20220916103324516.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
ose(HeapModifier.java:82) -> net.yacy.kelondro.blob.ArrayStack.unmountBLOB(ArrayStack.java:276) -> net.yacy.kelondro.blob.ArraySta
ck.unmountBestMatch(ArrayStack.java:323) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
I 2022/09/20 10:26:27 HeapReader * close HeapFile text.index.20220916103321178.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
ose(HeapModifier.java:82) -> net.yacy.kelondro.blob.ArrayStack.unmountBLOB(ArrayStack.java:276) -> net.yacy.kelondro.blob.ArraySta
ck.unmountBestMatch(ArrayStack.java:324) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
I 2022/09/20 10:26:27 RICELL-shrink1 * unmountBestMatch(2.0, 67108864) 
I 2022/09/20 10:26:27 IODispatcher * appended merge job of files text.index.20220916103321178.blob, text.index.20220916103324516.b
lob to text.index.20220920082627622.blob 
I 2022/09/20 10:26:27 HeapReader * close HeapFile text.index.20220920082618156.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
ose(HeapModifier.java:82) -> net.yacy.kelondro.blob.ArrayStack.unmountBLOB(ArrayStack.java:276) -> net.yacy.kelondro.blob.ArraySta
ck.unmountBestMatch(ArrayStack.java:323) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
I 2022/09/20 10:26:27 HeapReader * close HeapFile text.index.20220920082618092.blob; trace: net.yacy.kelondro.blob.HeapModifier.cl
ose(HeapModifier.java:82) -> net.yacy.kelondro.blob.ArrayStack.unmountBLOB(ArrayStack.java:276) -> net.yacy.kelondro.blob.ArraySta
ck.unmountBestMatch(ArrayStack.java:324) -> net.yacy.kelondro.rwi.ReferenceContainerArray.shrinkBestSmallFiles(ReferenceContainerA
rray.java:403) -> net.yacy.kelondro.rwi.IndexCell.shrink(IndexCell.java:193) -> net.yacy.kelondro.rwi.IndexCell.access$900(IndexCe
ll.java:65) -> net.yacy.kelondro.rwi.IndexCell$FlushThread.flushBuffer(IndexCell.java:174) -> net.yacy.kelondro.rwi.IndexCell$Flus
hThread.run(IndexCell.java:123) 
I 2022/09/20 10:26:27 RICELL-shrink1 * unmountBestMatch(2.0, 67108864) 
W 2022/09/20 10:26:27 IODispatcher * Could not add merge job to queue: Queue full 
I 2022/09/20 10:26:27 HeapReader * using a dump of the index of /usr/home/yacy/yacy-latest/DATA/HTCACHE/file.array/hnDmB2jAOA0r.20
220916055548061.blob. 
I 2022/09/20 10:26:27 Cache * initialized cache database responseHeaderDB.size() = NULL, fileDB.size() = 97188 
E 2022/09/20 10:26:27 STARTUP * YaCy cannot start: null 
java.lang.NullPointerException 
        at net.yacy.crawler.data.Cache.init(Cache.java:150) 
        at net.yacy.search.Switchboard.<init>(Switchboard.java:816) 
        at net.yacy.yacy.startup(yacy.java:210) 
        at net.yacy.yacy.main(yacy.java:827)

How much free disk space do you have?

that wasn’t an issue. i deleted some cache files and it started working again…

1 Like

fixed this in fix for "negative seek offset" error during extension of heap files. · yacy/yacy_search_server@4a54b24 · GitHub
(so i hope).
The error was obvious: heap files larger than 2GB produce a negative seek offset when expanding.

1 Like