                 @_synctable.wait
                     until   : (table) => table.getIn([@project_id, 'host', 'host'])?
                     timeout : 30  # should be very fast
-                    cb      : opts.cb
+                    cb      : cb
+            (cb) =>
+                dbg('update state')
+                @state
+                    force  : true
+                    update : true
+                    cb     : cb
         ], (err) =>
             dbg("opening done -- #{err}")
             opts.cb(err)

            ], opts.cb)
            return

        host = @host
        async.series([
            (cb) =>
                if not host
                    if opts.host
                        host = opts.host
                        cb()
                    else
                        dbg("choose a host")
                        @get_host
                            cb : (err, h) =>
                                host = h; cb(err)
                else
                    cb()
            (cb) =>
                dbg("request to open on '#{host}'")
                @_storage_request

        opts = defaults opts,
            host : undefined   # if given and project not on any host (so @host undefined), then this host will be used
            cb   : required
        if @host and @_state != 'closed'
            # already opened
            opts.cb()
            return
