Add logging if an index task unexpectedly has "dirty" objects to save back to mongo
diff --git a/Allura/allura/tasks/index_tasks.py b/Allura/allura/tasks/index_tasks.py
index a20dcfc..0162f28 100644
--- a/Allura/allura/tasks/index_tasks.py
+++ b/Allura/allura/tasks/index_tasks.py
@@ -49,11 +49,26 @@
     solr_instance.delete(q=solr_query)
 
 
+def check_for_dirty_ming_records(msg_prefix, ming_sessions=None):
+    """
+    A debugging helper to diagnose issues with code that unintentionally modifies records, causing them to be written
+    back to mongo (potentially clobbering values written by a parallel task/request)
+    """
+    if ming_sessions is None:
+        from allura.model import main_orm_session, artifact_orm_session, project_orm_session
+        ming_sessions = [main_orm_session, artifact_orm_session, project_orm_session]
+    for sess in ming_sessions:
+        dirty_objects = list(sess.uow.dirty)
+        if dirty_objects:
+            log.warning(msg_prefix + ' changed objects, causing writes back to mongo: %s',
+                        dirty_objects)
+
 @task
 def add_projects(project_ids):
     from allura.model.project import Project
     projects = Project.query.find(dict(_id={'$in': project_ids})).all()
     __add_objects(projects)
+    check_for_dirty_ming_records('add_projects task')
 
 
 @task
@@ -116,6 +131,7 @@
         six.reraise(exceptions[0][0], exceptions[0][1], exceptions[0][2])
     if exceptions:
         raise CompoundError(*exceptions)
+    check_for_dirty_ming_records('add_artifacts task')
 
 
 @task