@tornado.gen.coroutine
    def monitor_mongo_status(self):
        if (self.mongotimerbusy):
            self.log.warning('monitor_mongo_status: already in flight; did a previous call jam?')
            return
        if (self.app.caughtinterrupt):
            self.log.warning('monitor_mongo_status: shutting down, never mind')
            return
        self.mongotimerbusy = True
        
        if (self.mongoavailable):
            try:
                res = yield motor.Op(self.mongo.admin.command, 'ping')
                if (not res):
                    self.log.error('Mongo client not alive')
                    self.mongoavailable = False
            except Exception as ex:
                self.log.error('Mongo client not alive: %s', ex)
                self.mongoavailable = False
            if (not self.mongoavailable):
                self.mongo_disconnect()
            
        if (not self.mongoavailable):
            try:
                self.mongo = motor.MotorClient(tz_aware=True)
                res = yield motor.Op(self.mongo.open)
                ### maybe authenticate to a database?
                self.mongoavailable = True
                self.app.mongodb = self.mongo[self.app.twopts.mongo_database]
                self.log.info('Mongo client open')
                # Schedule a callback to load up the localization data.
                tornado.ioloop.IOLoop.instance().add_callback(self.load_localization)
            except Exception as ex:
                self.mongoavailable = False
                self.app.mongodb = None
                self.log.error('Mongo client not open: %s', ex)
        
        self.mongotimerbusy = False
Handles case property parent references. Examples for property_name can be:
dataset/ETHPy150Open erkyrath/tworld/lib/tweblib/servers.py/ServerMgr.monitor_mongo_status--crossover with--dataset/ETHPy150Open dimagi/commcare-hq/corehq/form_processor/models.py/CommCareCaseSQL.resolve_case_property