Skip to content

Commit 7ec0d1c

Browse files
committed
Revert "SERVER-13635 IndexAccessMethods now take a BtreeInterface rather than a RecordStore"
This reverts commit 98a0c6f.
1 parent 98a0c6f commit 7ec0d1c

21 files changed

+58
-88
lines changed

src/mongo/db/index/2d_access_method.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@
4242
namespace mongo {
4343

4444
TwoDAccessMethod::TwoDAccessMethod(IndexCatalogEntry* btreeState,
45-
BtreeInterface* btree)
46-
: BtreeBasedAccessMethod(btreeState, btree) {
45+
RecordStore* rs)
46+
: BtreeBasedAccessMethod(btreeState, rs) {
4747

4848
const IndexDescriptor* descriptor = btreeState->descriptor();
4949

src/mongo/db/index/2d_access_method.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ namespace mongo {
6969
using BtreeBasedAccessMethod::_descriptor;
7070

7171
TwoDAccessMethod(IndexCatalogEntry* btreeState,
72-
BtreeInterface* btree);
72+
RecordStore* rs);
7373
virtual ~TwoDAccessMethod() { }
7474

7575
private:

src/mongo/db/index/btree_access_method.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040
namespace mongo {
4141

4242
// Standard Btree implementation below.
43-
BtreeAccessMethod::BtreeAccessMethod(IndexCatalogEntry* btreeState, BtreeInterface* btree )
44-
: BtreeBasedAccessMethod(btreeState, btree) {
43+
BtreeAccessMethod::BtreeAccessMethod(IndexCatalogEntry* btreeState, RecordStore* rs )
44+
: BtreeBasedAccessMethod(btreeState, rs) {
4545

4646
// The key generation wants these values.
4747
vector<const char*> fieldNames;

src/mongo/db/index/btree_access_method.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ namespace mongo {
5252
using BtreeBasedAccessMethod::_descriptor;
5353

5454
BtreeAccessMethod(IndexCatalogEntry* btreeState,
55-
BtreeInterface* btree );
55+
RecordStore* rs );
5656
virtual ~BtreeAccessMethod() { }
5757

5858
private:

src/mongo/db/index/btree_based_access_method.cpp

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,31 @@ namespace mongo {
5050

5151
MONGO_EXPORT_SERVER_PARAMETER(failIndexKeyTooLong, bool, true);
5252

53-
void BtreeBasedAccessMethod::InvalidateCursorsNotification::aboutToDeleteBucket(
54-
const DiskLoc& bucket) {
55-
BtreeIndexCursor::aboutToDeleteBucket(bucket);
56-
}
53+
/**
54+
* Invalidates all active cursors, which point at the bucket being deleted.
55+
*/
56+
class InvalidateCursorsNotification : public BucketDeletionNotification {
57+
public:
58+
virtual void aboutToDeleteBucket(const DiskLoc& bucket) {
59+
BtreeIndexCursor::aboutToDeleteBucket(bucket);
60+
}
61+
};
5762

58-
BtreeBasedAccessMethod::InvalidateCursorsNotification BtreeBasedAccessMethod::invalidateCursors;
63+
static InvalidateCursorsNotification invalidateCursors;
5964

6065
BtreeBasedAccessMethod::BtreeBasedAccessMethod(IndexCatalogEntry* btreeState,
61-
BtreeInterface* btree)
66+
RecordStore* recordStore)
6267
: _btreeState(btreeState),
63-
_descriptor(btreeState->descriptor()),
64-
_newInterface(btree) {
68+
_recordStore( recordStore ),
69+
_descriptor(btreeState->descriptor()) {
70+
6571
verify(0 == _descriptor->version() || 1 == _descriptor->version());
72+
_newInterface.reset(BtreeInterface::getInterface(btreeState->headManager(),
73+
recordStore,
74+
btreeState->ordering(),
75+
_descriptor->indexNamespace(),
76+
_descriptor->version(),
77+
&invalidateCursors));
6678
}
6779

6880
// Find the keys for obj, put them in the tree pointing to loc
@@ -212,7 +224,7 @@ namespace mongo {
212224

213225

214226
Status BtreeBasedAccessMethod::touch( OperationContext* txn ) const {
215-
return _btree->touch(txn);
227+
return _recordStore->touch( txn, NULL );
216228
}
217229

218230
DiskLoc BtreeBasedAccessMethod::findSingle(const BSONObj& key) const {

src/mongo/db/index/btree_based_access_method.h

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@
3737
#include "mongo/db/index/index_cursor.h"
3838
#include "mongo/db/index/index_descriptor.h"
3939
#include "mongo/db/structure/btree/btree_interface.h"
40-
#include "mongo/db/structure/btree/bucket_deletion_notification.h"
4140

4241
namespace mongo {
4342

4443
class ExternalSortComparison;
44+
class RecordStore;
4545

4646
/**
4747
* Any access method that is Btree based subclasses from this.
@@ -58,7 +58,7 @@ namespace mongo {
5858
MONGO_DISALLOW_COPYING( BtreeBasedAccessMethod );
5959
public:
6060
BtreeBasedAccessMethod( IndexCatalogEntry* btreeState,
61-
BtreeInterface* btree );
61+
RecordStore* recordStore );
6262

6363
virtual ~BtreeBasedAccessMethod() { }
6464

@@ -103,16 +103,6 @@ namespace mongo {
103103
// XXX: consider migrating callers to use IndexCursor instead
104104
virtual DiskLoc findSingle( const BSONObj& key ) const;
105105

106-
/**
107-
* Invalidates all active cursors, which point at the bucket being deleted.
108-
* TODO see if there is a better place to put this.
109-
*/
110-
class InvalidateCursorsNotification : public BucketDeletionNotification {
111-
public:
112-
virtual void aboutToDeleteBucket(const DiskLoc& bucket);
113-
};
114-
static InvalidateCursorsNotification invalidateCursors;
115-
116106
protected:
117107
// Friends who need getKeys.
118108
friend class BtreeBasedBulkAccessMethod;
@@ -123,7 +113,7 @@ namespace mongo {
123113
virtual void getKeys(const BSONObj &obj, BSONObjSet *keys) = 0;
124114

125115
IndexCatalogEntry* _btreeState; // owned by IndexCatalogEntry
126-
scoped_ptr<BtreeInterface> _btree; // owned by us
116+
scoped_ptr<RecordStore> _recordStore; // owned by us
127117
const IndexDescriptor* _descriptor;
128118

129119
private:

src/mongo/db/index/btree_based_bulk_access_method.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,13 @@ namespace mongo {
113113

114114
Status BtreeBasedBulkAccessMethod::commit(set<DiskLoc>* dupsToDrop,
115115
bool mayInterrupt) {
116+
DiskLoc oldHead = _real->_btreeState->head();
117+
118+
// XXX: do we expect the tree to be empty but have a head set? Looks like so from old code.
119+
invariant(!oldHead.isNull());
120+
_real->_btreeState->setHead(_txn, DiskLoc());
121+
_real->_recordStore->deleteRecord(_txn, oldHead);
122+
116123
if (_isMultiKey) {
117124
_real->_btreeState->setMultikey( _txn );
118125
}

src/mongo/db/index/fts_access_method.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131

3232
namespace mongo {
3333

34-
FTSAccessMethod::FTSAccessMethod(IndexCatalogEntry* btreeState, BtreeInterface* btree )
35-
: BtreeBasedAccessMethod(btreeState, btree), _ftsSpec(btreeState->descriptor()->infoObj()) { }
34+
FTSAccessMethod::FTSAccessMethod(IndexCatalogEntry* btreeState, RecordStore* rs )
35+
: BtreeBasedAccessMethod(btreeState, rs), _ftsSpec(btreeState->descriptor()->infoObj()) { }
3636

3737
void FTSAccessMethod::getKeys(const BSONObj& obj, BSONObjSet* keys) {
3838
ExpressionKeysPrivate::getFTSKeys(obj, _ftsSpec, keys);

src/mongo/db/index/fts_access_method.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace mongo {
3838

3939
class FTSAccessMethod : public BtreeBasedAccessMethod {
4040
public:
41-
FTSAccessMethod(IndexCatalogEntry* btreeState, BtreeInterface* btree );
41+
FTSAccessMethod(IndexCatalogEntry* btreeState, RecordStore* rs );
4242
virtual ~FTSAccessMethod() { }
4343

4444
const fts::FTSSpec& getSpec() const { return _ftsSpec; }

src/mongo/db/index/hash_access_method.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333

3434
namespace mongo {
3535

36-
HashAccessMethod::HashAccessMethod(IndexCatalogEntry* btreeState, BtreeInterface* btree)
37-
: BtreeBasedAccessMethod(btreeState, btree) {
36+
HashAccessMethod::HashAccessMethod(IndexCatalogEntry* btreeState, RecordStore* rs)
37+
: BtreeBasedAccessMethod(btreeState, rs) {
3838

3939
const IndexDescriptor* descriptor = btreeState->descriptor();
4040

0 commit comments

Comments
 (0)