Node-DC/Node-DC-EIS

Error: 'Fatal error-No more IDs available. Aborting' expected?

Opened this issue · 7 comments

I am trying to run the benchmark inside using the README.docker instructions. The client hangs at this point:

clientuser@4c2d554eb2d1:~/Node-DC-EIS-client$ python runspec.py -f config.json
[20-12-2017 01:35:08] Parsing arguments.
Input options config files: config.json
Starting NODE-DC-EISv1.0 in Cluster Mode
[20-12-2017 01:35:08] Loading database with 10000 records.
In progress...
[20-12-2017 01:35:18] Loading database done.
[20-12-2017 01:35:18] Checking database consistency.
[20-12-2017 01:35:18] Database check successful.
[20-12-2017 01:35:18] Build list of employee IDs.
[20-12-2017 01:35:18] Build list of employee IDs done.
[20-12-2017 01:35:18] Build list of employee last names.
[20-12-2017 01:35:18] Build list of employee last names done.
[20-12-2017 01:35:18] Build list of address zipcodes.
[20-12-2017 01:35:18] Build list of address zipcode done.
[20-12-2017 01:35:18] Building list of Urls
[20-12-2017 01:35:18] Building list of Urls done.
[20-12-2017 01:35:18] Creating temporary log file
[20-12-2017 01:35:18] Starting meminfo collection process
[20-12-2017 01:35:18] Starting time based run.
[20-12-2017 01:35:18] Entering RampUp time window.
[20-12-2017 01:35:18] Started processing of requests with concurrency of [100] for [300] seconds
Fatal error-No more IDs available. Aborting
[20-12-2017 01:35:18] Starting process for post processing.

Is this expected? any idea what might have gone wrong?

@ofrobots This error can happens in two ways,

  1. During a POST request from the client, and
  2. DELETE request.
    Please check url_parmas{} object setting in config.json file in Node-DC-EIS-client directory doesn't have any errors. For example that object has three fields,
    url_params: {
    "get_ratio": "90",
    "post_ratio": "5",
    "delete_ratio": "5"
    }
    Summation of these numbers needs to be 100, moreover post and delete ratio should match. In detail, for every delete request, a record_id gets checked in the database and saved/cached at the client for future use (gets used in the next post request)
    See if these ratio's are not maintained properly.

@ofrobots Did this helped?

jBarz commented

I am also experiencing the same symptoms using the latest master branch.
On the server, I see the following error

Constructing list of first names
Constructing list of last names
Constructing list of Addresses
{ MongoError: The 'cursor' option is required, except for aggregate with the explain argument
    at Function.MongoError.create (/home/barboza/node.v6/temp/Node-DC-EIS/Node-DC-EIS-cluster/node_modules/mongodb-core/lib/error.js:31:11)
    at commandCallback (/home/barboza/node.v6/temp/Node-DC-EIS/Node-DC-EIS-cluster/node_modules/mongodb-core/lib/topologies/server.js:1154:66)
    at Callbacks.emit (/home/barboza/node.v6/temp/Node-DC-EIS/Node-DC-EIS-cluster/node_modules/mongodb-core/lib/topologies/server.js:119:3)
    at Connection.messageHandler (/home/barboza/node.v6/temp/Node-DC-EIS/Node-DC-EIS-cluster/node_modules/mongodb-core/lib/topologies/server.js:295:23)
    at Socket.<anonymous> (/home/barboza/node.v6/temp/Node-DC-EIS/Node-DC-EIS-cluster/node_modules/mongodb-core/lib/connection/connection.js:285:22)
    at emitOne (events.js:96:13)
    at Socket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at Socket.Readable.push (_stream_readable.js:134:10)
    at TCP.onread (net.js:559:20)
  name: 'MongoError',
  message: 'The \'cursor\' option is required, except for aggregate with the explain argument',
  ok: 0,
  errmsg: 'The \'cursor\' option is required, except for aggregate with the explain argument',
  code: 9,
  codeName: 'FailedToParse' }
jBarz commented

I was able to fix the issue by updating the package.json to use mongoose@4.13.8
Perhaps that is the requirement for the latest docker mongodb image?

@jBarz Thanks for the fix.

FWIW Bumping the mongoose version causes the server to emit warnings:

  1. (node:26132) DeprecationWarning: open()is deprecated in mongoose >= 4.11.0, useopenUri()instead, or set theuseMongoClientoption if usingconnect()orcreateConnection(). See http://mongoosejs.com/docs/connections.html#use-mongo-client
  2. (node:26132) DeprecationWarning: Mongoose: mpromise (mongoose's default promise library) is deprecated, plug in your own promise library instead: http://mongoosejs.com/docs/promises.html
jBarz commented

You're welcome.
fyi, I got those warnings too.

Suggested new name for issue: "package.json lists wrong mongoose version"