                             s.error = err # error *recorded*
                         c() # keep going no matter what
 
+            f = (project_id, c) ->
+                h = () ->
+                    dbg("timed out #{project_id} after 15 minutes")
+                    c()
+                    c = undefined
+                timer = setTimeout(h, 15*60*1000)
+                g project_id, () ->
+                    clearTimeout(timer)
+                    c?()
             async.mapLimit(projects, opts.limit, f, cb)
     ], (err) -> opts.cb?(err))
 

    storage_server = require('storage_server')
    db = undefined
    projects = undefined
    async.series([
        (cb) ->
            storage_server.get_database (err, d) ->

                projects.sort()
                cb(err)
        (cb) ->
            g = (project_id, c) ->
                s = {project_id:project_id}
                opts.status.push(s)
                cs = db.chunked_storage(id:project_id)
