summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDwight <dmerriman@gmail.com>2008-07-16 17:21:47 -0400
committerDwight <dmerriman@gmail.com>2008-07-16 17:21:47 -0400
commit7d5c131193f1740e4efe1750b58e1e4c3471b6e7 (patch)
treed34b53df085329aff15ed8fa449157499c42a7b5
parent4bfd28fa4839dfc98aef7c3e7ee0567eefd36b5c (diff)
downloadmongo-7d5c131193f1740e4efe1750b58e1e4c3471b6e7.tar.gz
roll back bad bug commited couple hours ago
-rw-r--r--db/btree.cpp7
-rw-r--r--db/btree.h14
-rw-r--r--db/pdfile.cpp11
3 files changed, 12 insertions, 20 deletions
diff --git a/db/btree.cpp b/db/btree.cpp
index ec2b28537de..57797e9c3d4 100644
--- a/db/btree.cpp
+++ b/db/btree.cpp
@@ -113,7 +113,12 @@ void BucketBasics::assertValid(bool force) {
break;
}
else if( z == 0 ) {
- wassert( k(i).recordLoc < k(i+1).recordLoc );
+ if( !(k(i).recordLoc < k(i+1).recordLoc) ) {
+ cout << "ERROR: btree key order corrupt (recordloc's wrong). Keys:" << endl;
+ cout << " k(" << i << "):" << keyNode(i).key.toString() << " RL:" << k(i).recordLoc.toString() << endl;
+ cout << " k(" << i+1 << "):" << keyNode(i+1).key.toString() << " RL:" << k(i+1).recordLoc.toString() << endl;
+ wassert( k(i).recordLoc < k(i+1).recordLoc );
+ }
}
}
}
diff --git a/db/btree.h b/db/btree.h
index e719d8e8965..39a1ff1ef4a 100644
--- a/db/btree.h
+++ b/db/btree.h
@@ -18,16 +18,14 @@ struct _KeyNode {
void setKeyDataOfs(short s) { _kdo = s; assert(s>=0); }
void setKeyDataOfsSavingUse(short s) { _kdo = s; assert(s>=0); }
void setUnused() {
- /* setting ofs to 1 is the sentinel. setInvalid sets the
- fileno, that is defensive code.
+ /* Setting ofs to odd is the sentinel for unused, as real recordLoc's are always
+ even numbers.
+ Note we need to keep its value basically the same as we use the recordLoc
+ as part of the key in the index (to handle duplicate keys efficiently).
*/
- recordLoc.setInvalid();
- recordLoc.GETOFS() = 1;
+ recordLoc.GETOFS() |= 1;
}
- /* & 1 for backward compatibility. can be made "== 1" later when we increment
- the db data version
- */
- int isUnused() { return (recordLoc.getOfs() & 1); }
+ int isUnused() { return recordLoc.getOfs() & 1; }
int isUsed() { return !isUnused(); }
};
diff --git a/db/pdfile.cpp b/db/pdfile.cpp
index cc61ce903d7..5c81b9998e1 100644
--- a/db/pdfile.cpp
+++ b/db/pdfile.cpp
@@ -757,17 +757,6 @@ void DataFileMgr::deleteRecord(const char *ns, Record *todelete, const DiskLoc&
{
d->nrecords--;
d->datasize -= todelete->netLength();
-/// DEBUGGING << "temp: dddelrec deleterecord " << ns << endl;
-// if( todelete->extentOfs == 0xaca500 ) {
-// cout << "break\n";
-// }
-/*
-TEMP: add deleted rec 0:aca5b0 aca500
-temp: adddelrec deleterecord admin.blog.posts
-TEMP: add deleted rec 0:b9e750 b6a500
-temp: adddelrec deleterecord admin.blog.posts
-*/
-
d->addDeletedRec((DeletedRecord*)todelete, dl);
}
}