Tuesday, 18 April 2017

MongoDB oplog stream Node.js

I have a local instance of MongoDB, started with --master, and I can see in the start log that I have a replica set oplog (file: /data/db/local.1) created. And it appears local.1 is updated every time I perform and insert().

I am trying to tail / stream the oplog with the following code...

MongoDB.connect('mongodb://localhost:27017/test',(e,db) => {
          if ( e ) { return console.log('Connect MongoDB Error',e); }
          console.log('Connected MongoDB'); 
          Server.DB = db;  
              db.collection('oplog.rs').find({}).toArray((e,d) => {
                console.log('oplog.rs');
                console.log(e);
                console.log(d);
              })  

          var updates = db.collection('oplog.rs').find({},{ 
                              tailable: true, 
                              awaitData: true, 
                              noCursorTimeout: true, 
                              oplogReplay: true, 
                              numberOfRetries: Number.MAX_VALUE 
                              }).stream();
                              
              updates.on('data',(data) => { console.log('data',data); });
              updates.on('error',(e) =>   { console.log('error',e); });
              updates.on('end',(end) =>   { console.log('end',end); });
        });

The Code logs the following on start...

oplog.rs
null
[]

However there is no output from stream, I set numberOfRetries to a lower value I get the error..

error { MongoError: No more documents in tailed cursor
    at Function.MongoError.create (/Users/peter/node_modules/mongodb-core/lib/error.js:31:11)
    at nextFunction (/Users/peter/node_modules/mongodb-core/lib/cursor.js:637:50)
    at /Users/peter/node_modules/mongodb-core/lib/cursor.js:588:7
    at queryCallback (/Users/peter/node_modules/mongodb-core/lib/cursor.js:211:18)
    at Callbacks.emit (/Users/peter/node_modules/mongodb-core/lib/topologies/server.js:116:3)
    at Connection.messageHandler (/Users/peter/node_modules/mongodb-core/lib/topologies/server.js:282:23)
    at Socket.<anonymous> (/Users/peter/node_modules/mongodb-core/lib/connection/connection.js:273:22)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:189:7)
    at readableAddChunk (_stream_readable.js:176:18)
  name: 'MongoError',
  message: 'No more documents in tailed cursor',
  tailable: true,
  awaitData: true }
end undefined


via user3094755

No comments:

Post a Comment