                                     if mesg.event == 'project_state_update'
                                         winston.debug("state_update #{misc.to_json(mesg)}")
                                         p = @_project_cache[mesg.project_id]
-                                        if p?
+                                        if p? and p.host == opts.host  # ignore updates from wrong host
                                             p._state      = mesg.state
                                             p._state_time = new Date()
                                             p.emit(p._state, p)

            nosave : false
            cb     : required
        args = []
        if opts.force
            args.push('--force')
        if opts.nosave
            args.push('--nosave')
        @_action
            action : "close"
            args   : args

            cb      : required
        dbg = @dbg("action")
        dbg("action=#{opts.action}; params=#{misc.to_safe_str(opts.params)}")
        @update_host
            cb : (err) =>
                if err
                    opts.cb(err); return
                @compute_server.call
                    host : @host
                    mesg :
                        message.compute
                            project_id : @project_id
                            action     : opts.action
                            args       : opts.args
                    timeout : opts.timeout
                    cb      : (err, resp) =>
                        if err
                            opts.cb(err)
                        else
                            if resp.error?
                                opts.cb(resp.error)
                            else
                                opts.cb(undefined, resp)

    ###
       The state of the project, which is one of:
