1

I'm trying to upgrade my Node application from 0.4 to 0.6 along with all modules. I think I've got everything correct, but MongoHQ returns:

db assertion failure

on every find/distinct call (connecting goes without errors)

Here's my package.json, I've fixed all modules to one specific version, because I initially had some differences between local and Heroku. The only difference right now is that I'm running Node 0.6.19 local and Heroku runs 0.6.18:

{ "name": "expensesspreadsheet"
, "version": "0.0.1"
, "engines":
  { "node" : "0.6.18"
  , "npm"  : "1.1.9"
  } 
, "main": "server.js"
, "dependencies":
  { "ejs":             "0.7.1"
  , "ejs-ext":         "0.1.1"
  , "express":         "2.5.10"
  , "railway":         "0.2.17-pre3"
  , "jugglingdb":      "0.1.10"
  , "yaml":            "0.2.3"
  , "coffee-script":   "1.3.3"
  , "mime":            "1.2.5"
  , "qs":              "0.5.0"
  , "mongoose":        "2.7.0"
  , "mongodb":         "1.0.2"
  , "connect-mongodb": "1.1.4"
  , "connect-auth":    "0.5.2"
  , "moment" :         "1.6.2"
  , "connect-heroku-redis" : "0.1.5"
  , "node-markdown" :  "0.1.0"
  , "recaptcha" :      "1.1.0"
  , "sendgrid":        "0.2.1"
  }
, "scripts":
  { "test": "nodeunit test/*/*"
  }
}

I'm using Mongoose to define a schema. Connecting to MongoHQ works fine (no errors in the callback). Let me know if you like to see that code, but it's very standard, almost straight from the Mongoose site.

However as discussed above, whenever I try to actually find any data, I get this nondescript error.

I've already manually connected to the database and executed the queries: works fine. I've connected my local environment to my mongohq: works fine.

All of this still work on Node 0.4 with mongoose 2.3.13 and mongodb driver 0.9.6-7

So my questions:

  • Does any one know how to debug this "db assertion failure" error?
  • Any other ideas what might be wrong?
Peter
  • 870
  • 6
  • 20
  • In the meantime, I created a fresh copy of the application with a fresh MongoHQ instance. That worked perfectly. As soon as I pointed the new app to the old MongoHQ URL, I got the same "db assertion failure" message. – Peter Jun 25 '12 at 16:16

1 Answers1

0

After investigating this with MongoHQ support, this turned out to be an authentication problem.

The MongoHQ URL supplied by Heroku was out of sync with the password on MongoHQ.

In the old version of the application I was using a manually constructed URL, which explains why that one worked.

How we figured that out? By looking at the MongoDB logs, these contained a clear authentication error. Sadly the returned JSON only contained the generic "db assertion failure" message with no additional detail.

Peter
  • 870
  • 6
  • 20