Opened 15 years ago

Last modified 15 years ago

#185 closed defect (WONTFIX)

Require mongodb v1.3+

Reported by: Caleb Davis Owned by:
Priority: trivial Milestone: 0.2.1
Component: programming Keywords:
Cc: Parent Tickets:

Description

Alert the user to older versions of mongodb, and possibly exit whatever was happening at the time.

Change History (14)

comment:1 by Caleb Davis, 15 years ago

so, where's the best place to do this check, since we don't really have an install.sh?

comment:2 by Christopher Allan Webber, 15 years ago

Owner: set to Elvenlord Elrond

mediagoblin/app.py MediaGoblinApp.**init** probably should call something.

It might be appropriate in mediagoblin/db/open.py also.

... I'm actually assigning this to Elrond, if he doesn't mind! I think he'll be able to find a good space. We could raise an exception like BadMongoVersion or something. I don't know :)

comment:3 by Elrond, 15 years ago

  1. Directly in db/open.py:connect_database_from_config().
  2. In init/init.py:setup_database(). * a) Either directly there, which isn't my favourite. * b) or by calling some "check_db_is_recent(db)" in db/open.py. (note the actual version isn't in the call! It's in db/open.py.)

Option 1 is simple, straight forward and gets the job done. Option 2 gives some parts the option to bypass the check by opening the db connection directly using db/open.py. (probably not relevant). Option 1 and 2b "hide" the actual check away and thus are more "other db backend future proof".

Any higher level (app.py) doesn't make sense to me. For example celery most likely also needs a recent enough version.

My vote is for 1), unless something needs to bypass the version check and run anyway. What about mongodb upgrades? Do they need any "help" by the apps?

Does that make sense?

comment:4 by Caleb Davis, 15 years ago

For now I added in the Hacking Howto (http://wiki.mediagoblin.org/index.php?title=HackingHowto&diff=107&oldid=42) that v1.3+ is the MongoDB prereq.

If one is using Ubuntu, v10.10(Meerkat)+ is recommended for compatibility with MediaGoblin. It's the first Ubuntu rev with a v1.3+ mongodb (v1.4.4 -https://launchpad.net/ubuntu/+source/mongodb)

That's the most compact, not scary way I could think of so far to preemptively alert to this dependency. I feel like the above paragraph should go in the hacking howto, but I'm not sure where to put it.

comment:6 by Christopher Allan Webber, 15 years ago

http://www.tnrglobal.com/blog/2010/05/how-to-get-the-mongodb-server-version-using-pymongo/

I don't think we should use that method for version comparison.. we should use setuptools (distutils?)' version comparison tools.

>>> from distutils.version import StrictVersion
>>> StrictVersion('0.1.0') >= StrictVersion('0.0.5')
True

comment:7 by Elrond, 15 years ago

Owner: set to Elvenlord Elrond

I just realized, that this bug is assigned to me. I don't want to block it! So if someone wants to handle it, do so! (removing assigned to just now.)

That said, we still need to decide which way to go? 1 or 2b? Do we ever need to bypass the version check? If not, I'd vote for 1. It's simple, straight forward, etc.

I have no particular idea on what Exception to raise, or what exactly to do in the bad case.

comment:8 by Christopher Allan Webber, 15 years ago

Personally I think 2a) sounds best, but I'd leave it up to the implementer to decide for sure. (We really need some logging mechanism...)

comment:9 by Elrond, 15 years ago

  1. I dislike 2a) because it moves a db backend specific thing (needed version of that backend) into the main non backend code. I know, there's no other backend anywhere soon. Still I don't like that. And 1) is exactly as simple and hides it in the backend. That said, I leave the decision to the actual implementer too.
  2. I think, StrictVersion might be a bad idea: From a quick look at help(StrictVersion) it seems to be very python specific (for example, two or three numbers only). And nobody knows how the mongodb version looks in the future. LooseVersion might be better?

comment:10 by Christopher Allan Webber, 15 years ago

Milestone: 0.0.50.1.0

comment:11 by Christopher Allan Webber, 15 years ago

Milestone: 0.1.00.2.0

comment:10 by Elrond, 15 years ago

Milestone: 0.2.00.2.1
Priority: NormalLow

We surely wont get his done for 0.2.0. Setting "Low priority", as we've decided to try a move to SQL.

comment:11 by Christopher Allan Webber, 15 years ago

Status: NewRejected

Set to rejected.

There's no serious reason to invest the time in this anymore.

comment:12 by Will Kahn-Greene, 14 years ago

The original url for this bug was http://bugs.foocorp.net/issues/478 .
Relations:
#170: related, #231: related

Note: See TracTickets for help on using tickets.