Skip to content

MongoError: Invalid Operation, no operations specified #730

Description

@lautarodragan

@WesleyCharlesBlake found the following error:

{
  "level": 50,
  "time": 1541423343204,
  "msg": "Error downloading IPFS hashes",
  "pid": 18,
  "hostname": "node-testnet-poet-node-6678fdb454-q6m69",
  "module": "StorageReader",
  "file": "Router",
  "method": "onBatchReaderReadNextDirectorySuccess",
  "error": {
    "driver": true,
    "name": "MongoError",
    "stack": [
      "MongoError: Invalid Operation, no operations specified",
      "    at Function.create (/usr/src/app/node_modules/mongodb-core/lib/error.js:43:12)",
      "    at toError (/usr/src/app/node_modules/mongodb/lib/utils.js:149:22)",
      "    at UnorderedBulkOperation.bulkExecute (/usr/src/app/node_modules/mongodb/lib/bulk/common.js:937:31)",
      "    at UnorderedBulkOperation.execute (/usr/src/app/node_modules/mongodb/lib/bulk/unordered.js:125:22)",
      "    at bulkWrite (/usr/src/app/node_modules/mongodb/lib/operations/collection_ops.js:115:8)",
      "    at /usr/src/app/node_modules/mongodb/lib/utils.js:437:24",
      "    at new Promise (<anonymous>)",
      "    at executeOperation (/usr/src/app/node_modules/mongodb/lib/utils.js:432:10)",
      "    at Collection.insertMany (/usr/src/app/node_modules/mongodb/lib/collection.js:528:10)",
      "    at ClaimController.download (/usr/src/app/dist/babel/src/StorageReader/ClaimController.js:149:35)",
      "    at Router.onBatchReaderReadNextDirectorySuccess (/usr/src/app/dist/babel/src/StorageReader/Router.js:32:44)",
      "    at Channel.BaseChannel.dispatchMessage (/usr/src/app/node_modules/amqplib/lib/channel.js:466:12)",
      "    at Channel.BaseChannel.handleDelivery (/usr/src/app/node_modules/amqplib/lib/channel.js:475:15)",
      "    at Channel.emit (events.js:182:13)",
      "    at /usr/src/app/node_modules/amqplib/lib/channel.js:263:10",
      "    at Channel.content (/usr/src/app/node_modules/amqplib/lib/channel.js:316:9)"
    ],
    "message": "Invalid Operation, no operations specified",
    "type": "MongoError"
  },
  "v": 1
}

This happens when download is called with an empty array of ipfsFileHashes:

async download(ipfsFileHashes: ReadonlyArray<string>) {
const logger = this.logger.child({ method: 'download' })
logger.trace({ ipfsFileHashes }, 'Downloading Claims')
try {
await this.collection.insertMany(
ipfsFileHashes.map(ipfsFileHash => ({
ipfsFileHash,
claimId: null,
lastDownloadAttemptTime: null,
downloadSuccessTime: null,
downloadAttempts: 0,
})),
{ ordered: false },
)
} catch (exception) {
if (exception.code !== ErrorCodes.DuplicateKey) throw exception
logger.trace({ exception }, 'Duplicate IPFS hash')
}
}

If ipfsFileHashes is empty, this resolves to

      await this.collection.insertMany(
        [],
        { ordered: false },
      )

download should check whether the array is empty and do nothing if so.

Severity

This shouldn't be logged as an error not to trigger any false alarms, but it's not causing any damage otherwise.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions