def wait_tag_or_edge_indexes_ready(sess, schema: str = "TAG"): resp = resp_ok(sess, f"SHOW {schema} INDEXES") jobs = [] for val in resp.column_values("Index Name"): job = val.as_string() resp = resp_ok(sess, f"REBUILD {schema} INDEX {job}", True) jobs.append(job_id(resp)) wait_all_jobs_finished(sess, jobs)
def clone_space(graph_spaces, session, request): space_desc = graph_spaces["space_desc"] current_space = space_desc._name new_space = "EmptyGraph_" + space_generator() space_desc._name = new_space resp_ok(session, space_desc.drop_stmt(), True) ngql = "create space " + new_space + " as " + current_space exec_query(request, ngql, session, graph_spaces) resp_ok(session, space_desc.use_stmt(), True) graph_spaces["space_desc"] = space_desc graph_spaces["drop_space"] = True
def is_job_finished(sess, job): rsp = resp_ok(sess, f"SHOW JOB {job}") assert rsp.row_size() > 0 def is_finished(val) -> bool: return val.is_string() and "FINISHED" == val.as_string() return any(is_finished(val) for val in rsp.row_values(0))
def preload_space( request, space, load_nba_data, load_nba_int_vid_data, load_student_data, session, graph_spaces, ): space = normalize_outline_scenario(request, space) if space == "nba": graph_spaces["space_desc"] = load_nba_data elif space == "nba_int_vid": graph_spaces["space_desc"] = load_nba_int_vid_data elif space == "student": graph_spaces["space_desc"] = load_student_data else: raise ValueError(f"Invalid space name given: {space}") resp_ok(session, f'USE {space};', True)
def get_running_jobs(sess): rsp = resp_ok(sess, "SHOW JOBS") assert rsp.row_size() > 0 def is_running_or_queue(val) -> bool: return val.is_string() and val.as_string() in ["RUNNING", "QUEUE"] def running_or_queue_row(row): return 1 if any(is_running_or_queue(val) for val in row) else 0 num_running_and_queue_jobs = 0 for i in range(rsp.row_size()): num_running_and_queue_jobs += running_or_queue_row(rsp.row_values(i)) return num_running_and_queue_jobs
def wait_index_ready(graph_spaces, session): space_desc = graph_spaces.get("space_desc", None) assert space_desc is not None space = space_desc.name resp_ok(session, f"USE {space}", True) wait_indexes_ready(session)
def having_executed(query, session, request): ngql = combine_query(query) ngql = normalize_outline_scenario(request, ngql) for stmt in ngql.split(';'): stmt and resp_ok(session, stmt, True)