@@ -1125,10 +1125,10 @@ WiredTigerRecoveryUnit* WiredTigerRecordStore::_getRecoveryUnit(OperationContext
11251125class WiredTigerRecordStore ::NumRecordsChange : public RecoveryUnit::Change {
11261126public:
11271127 NumRecordsChange (WiredTigerRecordStore* rs, int64_t diff) : _rs(rs), _diff(diff) {}
1128- virtual void commit () {
1129- _rs->_changeNumRecordsCommit (_diff);
1128+ virtual void commit () {}
1129+ virtual void rollback () {
1130+ _rs->_numRecords .fetchAndAdd (-_diff);
11301131 }
1131- virtual void rollback () {}
11321132
11331133private:
11341134 WiredTigerRecordStore* _rs;
@@ -1137,9 +1137,6 @@ class WiredTigerRecordStore::NumRecordsChange : public RecoveryUnit::Change {
11371137
11381138void WiredTigerRecordStore::_changeNumRecords (OperationContext* txn, int64_t diff) {
11391139 txn->recoveryUnit ()->registerChange (new NumRecordsChange (this , diff));
1140- }
1141-
1142- void WiredTigerRecordStore::_changeNumRecordsCommit (int64_t diff) {
11431140 if (diff > 0 ) {
11441141 if (_numRecords.fetchAndAdd (diff) < diff)
11451142 _numRecords.store (diff);
@@ -1150,25 +1147,24 @@ void WiredTigerRecordStore::_changeNumRecordsCommit(int64_t diff) {
11501147
11511148class WiredTigerRecordStore ::DataSizeChange : public RecoveryUnit::Change {
11521149public:
1153- DataSizeChange (WiredTigerRecordStore* rs, int64_t diff) : _rs(rs), _diff(diff) {}
1154- virtual void commit () {
1155- _rs->_increaseDataSizeCommit (_diff);
1150+ DataSizeChange (WiredTigerRecordStore* rs, int amount) : _rs(rs), _amount(amount) {}
1151+ virtual void commit () {}
1152+ virtual void rollback () {
1153+ _rs->_increaseDataSize (NULL , -_amount);
11561154 }
1157- virtual void rollback () {}
11581155
11591156private:
11601157 WiredTigerRecordStore* _rs;
1161- int64_t _diff ;
1158+ bool _amount ;
11621159};
11631160
1164- void WiredTigerRecordStore::_increaseDataSize (OperationContext* txn, int64_t diff ) {
1165- txn-> recoveryUnit ()-> registerChange ( new DataSizeChange ( this , diff));
1166- }
1161+ void WiredTigerRecordStore::_increaseDataSize (OperationContext* txn, int amount ) {
1162+ if (txn)
1163+ txn-> recoveryUnit ()-> registerChange ( new DataSizeChange ( this , amount));
11671164
1168- void WiredTigerRecordStore::_increaseDataSizeCommit (int64_t diff) {
1169- if (_dataSize.fetchAndAdd (diff) < 0 ) {
1170- if (diff > 0 ) {
1171- _dataSize.store (diff);
1165+ if (_dataSize.fetchAndAdd (amount) < 0 ) {
1166+ if (amount > 0 ) {
1167+ _dataSize.store (amount);
11721168 } else {
11731169 _dataSize.store (0 );
11741170 }
0 commit comments