diff --git a/Allura/allura/command/show_models.py b/Allura/allura/command/show_models.py
index 95558ec..7dc1c0a 100644
--- a/Allura/allura/command/show_models.py
+++ b/Allura/allura/command/show_models.py
@@ -111,9 +111,8 @@
     def command(self):
         from allura import model as M
         self.basic_setup()
-        # Collect indexes by collection name
-        main_indexes = defaultdict(list)
-        project_indexes = defaultdict(list)
+        main_indexes = defaultdict(lambda: defaultdict(list))  # by db, then collection name
+        project_indexes = defaultdict(list)  # by collection name
         base.log.info('Collecting indexes...')
         for m in Mapper.all_mappers():
             mgr = m.collection.m
@@ -124,15 +123,16 @@
                 continue
             base.log.info('... for class %s', cls)
             if session(cls) in (
-                M.main_orm_session, M.repository_orm_session):
-                idx = main_indexes[cname]
+                M.main_orm_session, M.repository_orm_session, M.task_orm_session):
+                idx = main_indexes[session(cls)][cname]
             else:
                 idx = project_indexes[cname]
             idx.extend(mgr.indexes)
         base.log.info('Updating indexes for main DB')
-        db = M.main_doc_session.db
-        for name, indexes in main_indexes.iteritems():
-            self._update_indexes(db[name], indexes)
+        for odm_session, db_indexes in main_indexes.iteritems():
+            db = odm_session.impl.db
+            for name, indexes in db_indexes.iteritems():
+                self._update_indexes(db[name], indexes)
         base.log.info('Updating indexes for project DBs')
         configured_dbs = set()
         for projects in utils.chunked_find(M.Project):
diff --git a/Allura/allura/model/__init__.py b/Allura/allura/model/__init__.py
index a329e34..5ce734e 100644
--- a/Allura/allura/model/__init__.py
+++ b/Allura/allura/model/__init__.py
@@ -22,6 +22,7 @@
 from .session import main_doc_session, main_orm_session
 from .session import project_doc_session, project_orm_session
 from .session import artifact_orm_session, repository_orm_session
+from .session import task_orm_session
 from .session import ArtifactSessionExtension
 
 import repo
diff --git a/Allura/allura/model/monq_model.py b/Allura/allura/model/monq_model.py
index 9964fc8..a9b2278 100644
--- a/Allura/allura/model/monq_model.py
+++ b/Allura/allura/model/monq_model.py
@@ -13,10 +13,11 @@
 from ming.orm import session, FieldProperty
 from ming.orm.declarative import MappedClass
 
-from .session import main_orm_session
+from .session import task_orm_session
 
 log = logging.getLogger(__name__)
 
+
 class MonQTask(MappedClass):
     '''Task to be executed by the taskd daemon.
 
@@ -40,7 +41,7 @@
     states = ('ready', 'busy', 'error', 'complete')
     result_types = ('keep', 'forget')
     class __mongometa__:
-        session = main_orm_session
+        session = task_orm_session
         name = 'monq_task'
         indexes = [
             [
@@ -236,7 +237,7 @@
             raise
         finally:
             self.time_stop = datetime.utcnow()
-            main_orm_session.flush(self)
+            session(self).flush(self)
             if restore_context:
                 c.project = old_cproject
                 c.app = old_capp
diff --git a/Allura/allura/model/session.py b/Allura/allura/model/session.py
index 11c3ff2..f3d5e22 100644
--- a/Allura/allura/model/session.py
+++ b/Allura/allura/model/session.py
@@ -68,8 +68,10 @@
 
 main_doc_session = Session.by_name('main')
 project_doc_session = Session.by_name('project')
+task_doc_session = Session.by_name('task')
 main_orm_session = ThreadLocalORMSession(main_doc_session)
 project_orm_session = ThreadLocalORMSession(project_doc_session)
+task_orm_session = ThreadLocalORMSession(task_doc_session)
 artifact_orm_session = ThreadLocalORMSession(
     doc_session=project_doc_session,
     extensions = [ ArtifactSessionExtension ])
diff --git a/Allura/development.ini b/Allura/development.ini
index 0d835b7..cd67320 100644
--- a/Allura/development.ini
+++ b/Allura/development.ini
@@ -130,8 +130,11 @@
 activitystream.enabled = false
 
 # Ming setup
+# These don't necessarily have to be separate databases, they could
+# be all in the same database if desired
 ming.main.uri = mongodb://127.0.0.1:27017/allura
 ming.project.uri = mongodb://127.0.0.1:27017/project-data
+ming.task.uri = mongodb://127.0.0.1:27017/task
 ming.zarkov.uri = mongodb://127.0.0.1:27017/zarkov
 
 # Zarkov host setting, requires the zarkov and gevent libraries.
diff --git a/Allura/test.ini b/Allura/test.ini
index 6b37100..fa951e2 100644
--- a/Allura/test.ini
+++ b/Allura/test.ini
@@ -27,6 +27,7 @@
 # ming.main.master = mongo://127.0.0.1:27018/allura
 ming.main.uri = mim:///allura
 ming.project.uri = mim:///project-data
+ming.task.uri = mim:///task
 
 # ActivityStream
 activitystream.master = mim://
