I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit 3b64ce74 authored by zzz's avatar zzz
Browse files

remove static logs

parent 7c88180b
No related branches found
No related tags found
No related merge requests found
......@@ -69,7 +69,7 @@ import net.i2p.util.Log;
public class BlockFile {
public static final int PAGESIZE = 1024;
public static final long OFFSET_MOUNTED = 20;
public static final Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
public final Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
public final RandomAccessInterface file;
......
......@@ -30,6 +30,9 @@ package net.metanotion.io.block;
import java.io.IOException;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
import net.metanotion.io.RandomAccessInterface;
/**
......@@ -80,7 +83,8 @@ class FreeListBlock {
branches[good++] = fpg;
}
if (good != len) {
BlockFile.log.error((len - good) + " bad pages in " + this);
Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
log.error((len - good) + " bad pages in " + this);
len = good;
writeBlock();
}
......@@ -146,7 +150,8 @@ class FreeListBlock {
if (len >= MAX_SIZE)
throw new IllegalStateException("full");
if (getMagic(freePage) == MAGIC_FREE) {
BlockFile.log.error("Double free page " + freePage, new Exception());
Log log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
log.error("Double free page " + freePage, new Exception());
return;
}
branches[len++] = freePage;
......
......@@ -82,13 +82,13 @@ public class BSkipLevels extends SkipLevels {
bottom = bsl.spanHash.get(Integer.valueOf(spanPage));
if (bottom == null) {
// FIXME recover better?
BlockFile.log.error("No span found in cache???");
bf.log.error("No span found in cache???");
throw new IOException("No span found in cache???");
}
this.levels = new BSkipLevels[maxLen];
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Reading New BSkipLevels with " + nonNull + " / " + maxLen + " valid levels page " + levelPage);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Reading New BSkipLevels with " + nonNull + " / " + maxLen + " valid levels page " + levelPage);
// We have to read now because new BSkipLevels() will move the file pointer
int[] lps = new int[nonNull];
for(int i = 0; i < nonNull; i++) {
......@@ -108,7 +108,7 @@ public class BSkipLevels extends SkipLevels {
levels[i] = new BSkipLevels(bf, lp, bsl);
bsl.levelHash.put(Integer.valueOf(lp), levels[i]);
} catch (IOException ioe) {
BlockFile.log.error("Corrupt database, bad level " + i +
bf.log.error("Corrupt database, bad level " + i +
" at page " + lp, ioe);
levels[i] = null;
fail = true;
......@@ -119,7 +119,7 @@ public class BSkipLevels extends SkipLevels {
Comparable nextKey = levels[i].key();
if (ourKey != null && nextKey != null &&
ourKey.compareTo(nextKey) >= 0) {
BlockFile.log.warn("Corrupt database, level out of order " + this +
bf.log.warn("Corrupt database, level out of order " + this +
' ' + print() +
" i = " + i + ' ' + levels[i]);
// This will be fixed in blvlfix() via BlockFile.getIndex()
......@@ -128,8 +128,8 @@ public class BSkipLevels extends SkipLevels {
}
// TODO also check that the level[] array is not out-of-order
} else {
if (BlockFile.log.shouldLog(Log.WARN))
BlockFile.log.warn("WTF " + this + " i = " + i + " of " + nonNull + " / " + maxLen + " valid levels but page is zero");
if (bf.log.shouldLog(Log.WARN))
bf.log.warn("WTF " + this + " i = " + i + " of " + nonNull + " / " + maxLen + " valid levels but page is zero");
levels[i] = null;
fail = true;
}
......@@ -137,7 +137,7 @@ public class BSkipLevels extends SkipLevels {
if (fail && bf.file.canWrite()) {
// corruption is actually fixed in blvlfix() via BlockFile.getIndex()
// after instantiation is complete
BlockFile.log.error("Repairing corruption of " + this +
bf.log.error("Repairing corruption of " + this +
' ' + print());
flush();
// if the removed levels have no other links to them, they and their data
......@@ -157,7 +157,7 @@ public class BSkipLevels extends SkipLevels {
@Override
public void flush() {
if (isKilled) {
BlockFile.log.error("Already killed!! " + this, new Exception());
bf.log.error("Already killed!! " + this, new Exception());
return;
}
try {
......@@ -180,11 +180,11 @@ public class BSkipLevels extends SkipLevels {
@Override
public void killInstance() {
if (isKilled) {
BlockFile.log.error("Already killed!! " + this, new Exception());
bf.log.error("Already killed!! " + this, new Exception());
return;
}
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Killing " + this + ' ' + print(), new Exception());
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Killing " + this + ' ' + print(), new Exception());
isKilled = true;
bsl.levelHash.remove(Integer.valueOf(levelPage));
bf.freePage(levelPage);
......@@ -197,8 +197,8 @@ public class BSkipLevels extends SkipLevels {
BSkipList bsl = (BSkipList) sl;
int page = bf.allocPage();
BSkipLevels.init(bf, page, bss.page, levels);
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("New BSkipLevels height " + levels + " page " + page);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("New BSkipLevels height " + levels + " page " + page);
return new BSkipLevels(bf, page, bsl);
} catch (IOException ioe) { throw new RuntimeException("Error creating database page", ioe); }
}
......@@ -228,13 +228,13 @@ public class BSkipLevels extends SkipLevels {
*/
private boolean blvlfix() {
TreeSet<SkipLevels> lvls = new TreeSet(new LevelComparator());
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Starting level search");
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Starting level search");
getAllLevels(this, lvls);
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Finished level search, found " + lvls.size() + " levels");
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Finished level search, found " + lvls.size() + " levels");
if (!this.equals(lvls.last())) {
BlockFile.log.error("First level is out of order! " + print());
bf.log.error("First level is out of order! " + print());
// TODO switch stack and other fields for the skiplist - hard to test
}
// traverse the levels, back-to-front
......@@ -242,17 +242,17 @@ public class BSkipLevels extends SkipLevels {
SkipLevels after = null;
for (SkipLevels lv : lvls) {
boolean modified = false;
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Checking " + lv.print());
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Checking " + lv.print());
if (after != null) {
int min = Math.min(after.levels.length, lv.levels.length);
for (int i = 0; i < min; i++) {
SkipLevels cur = lv.levels[i];
if (cur != after) {
if (cur != null)
BlockFile.log.warn("Level " + i + " was wrong, fixing for " + lv.print());
bf.log.warn("Level " + i + " was wrong, fixing for " + lv.print());
else
BlockFile.log.warn("Level " + i + " was null, fixing for " + lv.print());
bf.log.warn("Level " + i + " was null, fixing for " + lv.print());
lv.levels[i] = after;
modified = true;
}
......@@ -262,7 +262,7 @@ public class BSkipLevels extends SkipLevels {
for (int i = 0; i < lv.levels.length; i++) {
if (lv.levels[i] != null) {
lv.levels[i] = null;
BlockFile.log.warn("Last level " + i + " was non-null, fixing for " + lv.print());
bf.log.warn("Last level " + i + " was non-null, fixing for " + lv.print());
modified = true;
}
}
......@@ -273,8 +273,8 @@ public class BSkipLevels extends SkipLevels {
}
after = lv;
}
if (BlockFile.log.shouldLog(Log.INFO))
BlockFile.log.info("Checked " + lvls.size() + " levels");
if (bf.log.shouldLog(Log.INFO))
bf.log.info("Checked " + lvls.size() + " levels");
return rv;
}
......@@ -286,16 +286,16 @@ public class BSkipLevels extends SkipLevels {
* @since 0.8.8
*/
private void getAllLevels(SkipLevels l, Set lvlSet) {
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("GAL " + l.print());
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("GAL " + l.print());
// Do level 0 without recursion, on the assumption everything is findable
// from the root
SkipLevels cur = l;
while (cur != null && lvlSet.add(cur)) {
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Adding " + cur.print());
if (!cur.equals(this) && cur.key() == null && BlockFile.log.shouldLog(Log.WARN))
BlockFile.log.debug("Null KEY!!! " + cur.print());
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Adding " + cur.print());
if (!cur.equals(this) && cur.key() == null && bf.log.shouldLog(Log.WARN))
bf.log.debug("Null KEY!!! " + cur.print());
cur = cur.levels[0];
}
// If there were no nulls at level 0 in the middle,
......@@ -333,23 +333,23 @@ public class BSkipLevels extends SkipLevels {
*/
@Override
public boolean blvlck(boolean fix, int width, SkipLevels[] prevLevels) {
BlockFile.log.warn(" Skip level at width " + width);
BlockFile.log.warn(" levels " + this.levels.length);
BlockFile.log.warn(" first key " + this.key());
BlockFile.log.warn(" spanPage " + this.spanPage);
BlockFile.log.warn(" levelPage " + this.levelPage);
bf.log.warn(" Skip level at width " + width);
bf.log.warn(" levels " + this.levels.length);
bf.log.warn(" first key " + this.key());
bf.log.warn(" spanPage " + this.spanPage);
bf.log.warn(" levelPage " + this.levelPage);
SkipLevels higher = null;
for (int i = levels.length - 1; i >= 0; i--) {
if (levels[i] != null) {
BlockFile.log.info(" level " + i + " -> " + levels[i].key() + " ");
bf.log.info(" level " + i + " -> " + levels[i].key() + " ");
if (higher != null) {
if (higher.key().compareTo(key()) < 0)
BlockFile.log.warn(" Higher level has lower key " + higher.key());
bf.log.warn(" Higher level has lower key " + higher.key());
}
} else {
BlockFile.log.info(" level " + i + " empty");
bf.log.info(" level " + i + " empty");
if (higher != null)
BlockFile.log.warn(" Higher level is not empty, key is " + higher.key());
bf.log.warn(" Higher level is not empty, key is " + higher.key());
}
}
if (prevLevels != null) {
......@@ -359,13 +359,13 @@ public class BSkipLevels extends SkipLevels {
prevLevels[i] = levels[i];
} else if (prevLevels[i] != null) {
// skipping over us
BlockFile.log.warn(" Previous levels is non-null " + prevLevels[i].key() + " but not pointing to us at level " + i);
bf.log.warn(" Previous levels is non-null " + prevLevels[i].key() + " but not pointing to us at level " + i);
// replace so we only get one error
prevLevels[i] = levels[i];
} else {
// dead end in the middle
if (levels[i] != null) {
BlockFile.log.warn(" Previous levels is null but we are non-null " + levels[i].key() + " at level " + i);
bf.log.warn(" Previous levels is null but we are non-null " + levels[i].key() + " at level " + i);
// replace so we only get one error
prevLevels[i] = levels[i];
}
......
......@@ -96,12 +96,12 @@ public class BSkipList extends SkipList {
for (BSkipSpan ss : spanHash.values()) {
total += ss.nKeys;
}
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Loaded " + this + " cached " + levelHash.size() + " levels and " + spanHash.size() + " spans with " + total + " entries");
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Loaded " + this + " cached " + levelHash.size() + " levels and " + spanHash.size() + " spans with " + total + " entries");
if (bf.file.canWrite() &&
(levelCount != levelHash.size() || spans != spanHash.size() || size != total)) {
if (BlockFile.log.shouldLog(Log.WARN))
BlockFile.log.warn("On-disk counts were " + levelCount + " / " + spans + " / " + size + ", correcting");
if (bf.log.shouldLog(Log.WARN))
bf.log.warn("On-disk counts were " + levelCount + " / " + spans + " / " + size + ", correcting");
size = total;
flush();
}
......@@ -121,7 +121,7 @@ public class BSkipList extends SkipList {
if (!bf.file.canWrite())
return;
if (isClosed) {
BlockFile.log.error("Already closed!! " + this, new Exception());
bf.log.error("Already closed!! " + this, new Exception());
return;
}
try {
......@@ -139,7 +139,7 @@ public class BSkipList extends SkipList {
/** must be open (do not call close() first) */
public void delete() throws IOException {
if (isClosed) {
BlockFile.log.error("Already closed!! " + this, new Exception());
bf.log.error("Already closed!! " + this, new Exception());
return;
}
SkipLevels curLevel = stack;
......@@ -229,16 +229,16 @@ public class BSkipList extends SkipList {
* @return true if the levels were modified.
*/
public boolean bslck(boolean fix, boolean isMeta) {
BlockFile.log.info(" size " + this.size);
BlockFile.log.info(" spans " + this.spanHash.size());
BlockFile.log.info(" levels " + this.levelHash.size());
BlockFile.log.info(" skipPage " + this.skipPage);
BlockFile.log.info(" firstSpanPage " + this.firstSpanPage);
BlockFile.log.info(" firstLevelPage " + this.firstLevelPage);
BlockFile.log.info(" maxLevels " + this.maxLevels());
bf.log.info(" size " + this.size);
bf.log.info(" spans " + this.spanHash.size());
bf.log.info(" levels " + this.levelHash.size());
bf.log.info(" skipPage " + this.skipPage);
bf.log.info(" firstSpanPage " + this.firstSpanPage);
bf.log.info(" firstLevelPage " + this.firstLevelPage);
bf.log.info(" maxLevels " + this.maxLevels());
//printSL();
//print();
//BlockFile.log.info("*** Lvlck() ***");
//bf.log.info("*** Lvlck() ***");
boolean rv = stack.blvlck(fix);
/****
int items = 0;
......@@ -246,16 +246,16 @@ public class BSkipList extends SkipList {
String key = (String) iter.nextKey();
if (isMeta) {
int sz = ((Integer) iter.next()).intValue();
BlockFile.log.info(" Item " + key.toString() + " page " + sz);
bf.log.info(" Item " + key.toString() + " page " + sz);
} else {
String cls= iter.next().getClass().getSimpleName();
BlockFile.log.info(" Item " + key.toString() + " class " + cls);
bf.log.info(" Item " + key.toString() + " class " + cls);
}
items++;
}
BlockFile.log.warn(" actual size " + items);
bf.log.warn(" actual size " + items);
if (items != this.size)
BlockFile.log.warn("****** size mismatch, header = " + this.size + " actual = " + items);
bf.log.warn("****** size mismatch, header = " + this.size + " actual = " + items);
****/
return rv;
}
......
......@@ -100,18 +100,18 @@ public class BSkipSpan extends SkipSpan {
@Override
public void killInstance() {
if (isKilled) {
BlockFile.log.error("Already killed!! " + this, new Exception());
bf.log.error("Already killed!! " + this, new Exception());
return;
}
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Killing " + this);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Killing " + this);
isKilled = true;
try {
int curPage = overflowPage;
bf.freePage(page);
freeContinuationPages(curPage);
} catch (IOException ioe) {
BlockFile.log.error("Error freeing " + this, ioe);
bf.log.error("Error freeing " + this, ioe);
}
bsl.spanHash.remove(Integer.valueOf(this.page));
}
......@@ -146,7 +146,7 @@ public class BSkipSpan extends SkipSpan {
*/
private void fflush() {
if (isKilled) {
BlockFile.log.error("Already killed!! " + this, new Exception());
bf.log.error("Already killed!! " + this, new Exception());
return;
}
try {
......@@ -163,7 +163,7 @@ public class BSkipSpan extends SkipSpan {
bf.file.writeShort((short) keys.length);
bf.file.writeShort((short) nKeys);
if (nKeys <= 0 && prev != null)
BlockFile.log.error("Flushing with no entries?" + this, new Exception());
bf.log.error("Flushing with no entries?" + this, new Exception());
int ksz, vsz;
int curPage = this.page;
......@@ -193,7 +193,7 @@ public class BSkipSpan extends SkipSpan {
}
// Drop bad entry without throwing exception
if (keys[i] == null || vals[i] == null) {
BlockFile.log.error("Dropping null data in entry " + i + " page " + curPage +
bf.log.error("Dropping null data in entry " + i + " page " + curPage +
" key=" + this.keys[i] + " val=" + this.vals[i]);
nKeys--;
i--;
......@@ -203,7 +203,7 @@ public class BSkipSpan extends SkipSpan {
valData = this.valSer.getBytes(vals[i]);
// Drop bad entry without throwing exception
if (keyData.length > 65535 || valData.length > 65535) {
BlockFile.log.error("Dropping huge data in entry " + i + " page " + curPage +
bf.log.error("Dropping huge data in entry " + i + " page " + curPage +
" keylen=" + keyData.length + " vallen=" + valData.length);
nKeys--;
i--;
......@@ -227,10 +227,10 @@ public class BSkipSpan extends SkipSpan {
this.overflowPage = 0;
try {
int freed = freeContinuationPages(curNextPage[0]);
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Freed " + freed + " continuation pages");
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Freed " + freed + " continuation pages");
} catch (IOException ioe) {
BlockFile.log.error("Error freeing " + this, ioe);
bf.log.error("Error freeing " + this, ioe);
}
}
} catch (IOException ioe) { throw new RuntimeException("Error writing to database", ioe); }
......@@ -268,7 +268,7 @@ public class BSkipSpan extends SkipSpan {
bss.spanSize = bf.file.readUnsignedShort();
bss.nKeys = bf.file.readUnsignedShort();
if(bss.spanSize < 1 || bss.spanSize > SkipSpan.MAX_SIZE || bss.nKeys > bss.spanSize) {
BlockFile.log.error("Invalid span size " + bss.nKeys + " / "+ bss.spanSize);
bf.log.error("Invalid span size " + bss.nKeys + " / "+ bss.spanSize);
bss.nKeys = 0;
bss.spanSize = bf.spanSize;
}
......@@ -306,7 +306,7 @@ public class BSkipSpan extends SkipSpan {
BlockFile.pageSeek(this.bf.file, curNextPage[0]);
int magic = bf.file.readInt();
if (magic != BlockFile.MAGIC_CONT) {
BlockFile.log.error("Lost " + (this.nKeys - i) + " entries - Bad SkipSpan magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage[0]);
bf.log.error("Lost " + (this.nKeys - i) + " entries - Bad SkipSpan magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage[0]);
lostEntries(i, curPage);
break;
}
......@@ -324,7 +324,7 @@ public class BSkipSpan extends SkipSpan {
curPage = this.bf.readMultiPageData(k, curPage, pageCounter, curNextPage);
curPage = this.bf.readMultiPageData(v, curPage, pageCounter, curNextPage);
} catch (IOException ioe) {
BlockFile.log.error("Lost " + (this.nKeys - i) + " entries - Error loading " + this + " on page " + curPage, ioe);
bf.log.error("Lost " + (this.nKeys - i) + " entries - Error loading " + this + " on page " + curPage, ioe);
lostEntries(i, lastGood);
break;
}
......@@ -333,7 +333,7 @@ public class BSkipSpan extends SkipSpan {
this.vals[i] = this.valSer.construct(v);
// Drop bad entry without throwing exception
if (this.keys[i] == null || this.vals[i] == null) {
BlockFile.log.error("Null deserialized data in entry " + i + " page " + curPage +
bf.log.error("Null deserialized data in entry " + i + " page " + curPage +
" key=" + this.keys[i] + " val=" + this.vals[i]);
fail++;
nKeys--;
......@@ -343,7 +343,7 @@ public class BSkipSpan extends SkipSpan {
}
// free any excess overflow pages?
if (fail > 0) {
BlockFile.log.error("Repairing corruption of " + fail + " entries");
bf.log.error("Repairing corruption of " + fail + " entries");
if (flushOnError)
fflush();
// FIXME can't get there from here
......@@ -375,7 +375,7 @@ public class BSkipSpan extends SkipSpan {
}
bf.file.writeShort(this.nKeys);
} catch (IOException ioe) {
BlockFile.log.error("Error while recovering from corruption of " + this, ioe);
bf.log.error("Error while recovering from corruption of " + this, ioe);
}
}
......
......@@ -60,8 +60,8 @@ public class IBSkipSpan extends BSkipSpan {
@Override
public SkipSpan newInstance(SkipList sl) {
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Splitting page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Splitting page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
try {
int newPage = bf.allocPage();
init(bf, newPage, bf.spanSize);
......@@ -86,11 +86,11 @@ public class IBSkipSpan extends BSkipSpan {
this.firstKey = keys[0];
this.keys = null;
this.vals = null;
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Flushed data for page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
} else if (BlockFile.log.shouldLog(Log.DEBUG)) {
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Flushed data for page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
} else if (bf.log.shouldLog(Log.DEBUG)) {
// if keys is null, we are (hopefully) just updating the prev/next pages on an unloaded span
BlockFile.log.debug("Flushed pointers for for unloaded page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
bf.log.debug("Flushed pointers for for unloaded page " + this.page + " containing " + this.nKeys + '/' + this.spanSize);
}
}
......@@ -103,8 +103,8 @@ public class IBSkipSpan extends BSkipSpan {
super.loadData();
if (this.nKeys > 0)
this.firstKey = this.keys[0];
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Loaded data for page " + this.page + " containing " + this.nKeys + '/' + this.spanSize + " first key: " + this.firstKey);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Loaded data for page " + this.page + " containing " + this.nKeys + '/' + this.spanSize + " first key: " + this.firstKey);
}
/**
......@@ -127,11 +127,11 @@ public class IBSkipSpan extends BSkipSpan {
curPage = this.bf.readMultiPageData(k, curPage, pageCounter, curNextPage);
this.firstKey = (Comparable) this.keySer.construct(k);
if (this.firstKey == null) {
BlockFile.log.error("Null deserialized first key in page " + curPage);
bf.log.error("Null deserialized first key in page " + curPage);
repair(1);
}
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Loaded header for page " + this.page + " containing " + this.nKeys + '/' + this.spanSize + " first key: " + this.firstKey);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Loaded header for page " + this.page + " containing " + this.nKeys + '/' + this.spanSize + " first key: " + this.firstKey);
}
/**
......@@ -174,7 +174,7 @@ public class IBSkipSpan extends BSkipSpan {
BlockFile.pageSeek(this.bf.file, curNextPage[0]);
int magic = bf.file.readInt();
if (magic != BlockFile.MAGIC_CONT) {
BlockFile.log.error("Lost " + (this.nKeys - i) + " entries - Bad SkipSpan magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage[0]);
bf.log.error("Lost " + (this.nKeys - i) + " entries - Bad SkipSpan magic number 0x" + Integer.toHexString(magic) + " on page " + curNextPage[0]);
lostEntries(i, curPage);
break;
}
......@@ -189,7 +189,7 @@ public class IBSkipSpan extends BSkipSpan {
try {
curPage = this.bf.readMultiPageData(k, curPage, pageCounter, curNextPage);
} catch (IOException ioe) {
BlockFile.log.error("Lost " + (this.nKeys - i) + " entries - Error loading " + this + " on page " + curPage, ioe);
bf.log.error("Lost " + (this.nKeys - i) + " entries - Error loading " + this + " on page " + curPage, ioe);
lostEntries(i, curPage);
break;
}
......@@ -198,7 +198,7 @@ public class IBSkipSpan extends BSkipSpan {
if (ckey == null) {
// skip the value and keep going
curPage = this.bf.skipMultiPageBytes(vsz, curPage, pageCounter, curNextPage);
BlockFile.log.error("Null deserialized key in entry " + i + " page " + curPage);
bf.log.error("Null deserialized key in entry " + i + " page " + curPage);
fail++;
continue;
}
......@@ -209,13 +209,13 @@ public class IBSkipSpan extends BSkipSpan {
try {
curPage = this.bf.readMultiPageData(v, curPage, pageCounter, curNextPage);
} catch (IOException ioe) {
BlockFile.log.error("Lost " + (this.nKeys - i) + " entries - Error loading " + this + " on page " + curPage, ioe);
bf.log.error("Lost " + (this.nKeys - i) + " entries - Error loading " + this + " on page " + curPage, ioe);
lostEntries(i, curPage);
break;
}
Object rv = this.valSer.construct(v);
if (rv == null) {
BlockFile.log.error("Null deserialized value in entry " + i + " page " + curPage +
bf.log.error("Null deserialized value in entry " + i + " page " + curPage +
" key=" + ckey);
fail++;
}
......@@ -245,9 +245,9 @@ public class IBSkipSpan extends BSkipSpan {
if (this.nKeys > 0)
this.firstKey = this.keys[0];
flush();
BlockFile.log.error("Repaired corruption of " + fail + " entries");
bf.log.error("Repaired corruption of " + fail + " entries");
} catch (IOException ioe) {
BlockFile.log.error("Failed to repair corruption of " + fail + " entries", ioe);
bf.log.error("Failed to repair corruption of " + fail + " entries", ioe);
}
*****/
}
......@@ -258,8 +258,8 @@ public class IBSkipSpan extends BSkipSpan {
public IBSkipSpan(BlockFile bf, BSkipList bsl, int spanPage, Serializer key, Serializer val) throws IOException {
super(bf, bsl);
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("New ibss page " + spanPage);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("New ibss page " + spanPage);
BSkipSpan.loadInit(this, bf, bsl, spanPage, key, val);
loadFirstKey();
this.next = null;
......@@ -287,7 +287,7 @@ public class IBSkipSpan extends BSkipSpan {
previousFirstKey.compareTo(nextFirstKey) >= 0) {
// TODO remove, but if we are at the bottom of a level
// we have to remove the level too, which is a mess
BlockFile.log.error("Corrupt database, span out of order " + ((BSkipSpan)bss.prev).page +
bf.log.error("Corrupt database, span out of order " + ((BSkipSpan)bss.prev).page +
" first key " + previousFirstKey +
" next page " + bss.page +
" first key " + nextFirstKey);
......@@ -317,7 +317,7 @@ public class IBSkipSpan extends BSkipSpan {
previousFirstKey.compareTo(nextFirstKey) >= 0) {
// TODO remove, but if we are at the bottom of a level
// we have to remove the level too, which is a mess
BlockFile.log.error("Corrupt database, span out of order " + bss.page +
bf.log.error("Corrupt database, span out of order " + bss.page +
" first key " + previousFirstKey +
" next page " + ((BSkipSpan)bss.next).page +
" first key " + nextFirstKey);
......@@ -386,16 +386,16 @@ public class IBSkipSpan extends BSkipSpan {
*/
@Override
public Object[] remove(Comparable key, SkipList sl) {
if (BlockFile.log.shouldLog(Log.DEBUG))
BlockFile.log.debug("Remove " + key + " in " + this);
if (bf.log.shouldLog(Log.DEBUG))
bf.log.debug("Remove " + key + " in " + this);
if (nKeys <= 0)
return null;
try {
seekAndLoadData();
if (this.nKeys == 1 && this.prev == null && this.next != null && this.next.keys == null) {
// fix for NPE in SkipSpan if next is not loaded
if (BlockFile.log.shouldLog(Log.INFO))
BlockFile.log.info("Loading next data for remove");
if (bf.log.shouldLog(Log.INFO))
bf.log.info("Loading next data for remove");
((IBSkipSpan)this.next).seekAndLoadData();
}
} catch (IOException ioe) {
......
......@@ -30,6 +30,7 @@ package net.metanotion.util.skiplist;
import net.metanotion.io.block.BlockFile;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
public class SkipLevels {
......@@ -45,6 +46,7 @@ public class SkipLevels {
public SkipLevels[] levels;
// bottom is final
public SkipSpan bottom;
private final Log _log = I2PAppContext.getGlobalContext().logManager().getLog(BlockFile.class);
public SkipLevels newInstance(int levels, SkipSpan ss, SkipList sl) { return new SkipLevels(levels, ss); }
public void killInstance() { }
......@@ -158,13 +160,13 @@ public class SkipLevels {
SkipSpan ssres = (SkipSpan)res[1];
if (bottom.firstKey().equals(ssres.firstKey())) {
// bottom copied the next span to itself
if (BlockFile.log.shouldLog(Log.INFO)) {
BlockFile.log.info("First Level, bottom.remove() copied and did not return itself!!!! in remove " + key);
BlockFile.log.info("Us: " + print());
BlockFile.log.info("next: " + levels[0].print());
BlockFile.log.info("ssres.firstKey(): " + ssres.firstKey());
BlockFile.log.info("ssres.keys[0]: " + ssres.keys[0]);
BlockFile.log.info("FIXUP TIME");
if (_log.shouldLog(Log.INFO)) {
_log.info("First Level, bottom.remove() copied and did not return itself!!!! in remove " + key);
_log.info("Us: " + print());
_log.info("next: " + levels[0].print());
_log.info("ssres.firstKey(): " + ssres.firstKey());
_log.info("ssres.keys[0]: " + ssres.keys[0]);
_log.info("FIXUP TIME");
}
SkipLevels replace = levels[0];
......@@ -174,16 +176,16 @@ public class SkipLevels {
if (i >= replace.levels.length)
break;
if (levels[i].key().equals(replace.key())) {
if (BlockFile.log.shouldLog(Log.INFO))
BlockFile.log.info("equal level " + i);
if (_log.shouldLog(Log.INFO))
_log.info("equal level " + i);
levels[i] = replace.levels[i];
} else if (BlockFile.log.shouldLog(Log.INFO)) {
BlockFile.log.info("not equal level " + i + ' ' + levels[i].key());
} else if (_log.shouldLog(Log.INFO)) {
_log.info("not equal level " + i + ' ' + levels[i].key());
}
}
this.flush();
if (BlockFile.log.shouldLog(Log.INFO))
BlockFile.log.info("new Us: " + print());
if (_log.shouldLog(Log.INFO))
_log.info("new Us: " + print());
replace.killInstance();
}
}
......@@ -193,11 +195,11 @@ public class SkipLevels {
if((bottom.nKeys == 0) && (sl.first != bottom)) {
// from debugging other problems
if (res == null) {
BlockFile.log.warn("WTF killing with no return value " + print());
_log.warn("WTF killing with no return value " + print());
} else if (res[1] == null) {
BlockFile.log.warn("WTF killing with no return value 1 " + print());
_log.warn("WTF killing with no return value 1 " + print());
} else if (res[1] != this) {
BlockFile.log.warn("WTF killing with return value not us " + res[1] + ' ' + print());
_log.warn("WTF killing with return value not us " + res[1] + ' ' + print());
}
this.killInstance();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment