async def METHOD_NAME(self, op_name, key_or_mod, value=None, persist=None, metadata=None):
    logger.info("Starting %s operation on %s", op_name, key_or_mod)
    try:
        remote = RPCClient()
        await remote.connect_rpc(self.master_host, self.master_port,
                                 "master_dataset_db")
        try:
            if op_name == "set":
                await remote.set(key_or_mod, value, persist, metadata)
            elif op_name == "update":
                await remote.update(key_or_mod)
            else:
                logger.error("Invalid operation: %s", op_name)
                return
        finally:
            remote.close_rpc()
    except:
        logger.error("Failed %s operation on %s", op_name,
                    key_or_mod, exc_info=True)
    else:
        logger.info("Finished %s operation on %s", op_name,
                 key_or_mod)