Status RocksSortedDataImpl::insert(OperationContext* txn,
                                       const BSONObj& key,
                                       const DiskLoc& loc,
                                       bool dupsAllowed) {

        if (key.objsize() >= kTempKeyMaxSize) {
            string msg = mongoutils::str::stream()
                         << "RocksSortedDataImpl::insert: key too large to index, failing " << ' '
                         << key.objsize() << ' ' << key;
                return Status(ErrorCodes::KeyTooLong, msg);
        }

        RocksRecoveryUnit* ru = RocksRecoveryUnit::getRocksRecoveryUnit(txn);

        if ( !dupsAllowed ) {
            // TODO need key locking to support unique indexes.
            Status status = dupKeyCheck( txn, key, loc );
            if ( !status.isOK() ) {
                return status;
            }
        }

        ru->registerChange(new ChangeNumEntries(&_numEntries, true));
        ru->writeBatch()->Put(_columnFamily.get(), makeString(key, loc), emptyByteSlice);

        return Status::OK();
    }
    bool RocksSortedDataImpl::unindex(OperationContext* txn,
                                      const BSONObj& key,
                                      const DiskLoc& loc) {
        RocksRecoveryUnit* ru = RocksRecoveryUnit::getRocksRecoveryUnit(txn);

        const string keyData = makeString( key, loc );

        string dummy;
        if (ru->Get(_columnFamily.get(), keyData, &dummy).IsNotFound()) {
            return false;
        }

        ru->registerChange(new ChangeNumEntries(&_numEntries, false));
        ru->writeBatch()->Delete(_columnFamily.get(), keyData);
        return true;
    }