Open
Description
System information
- Have I written custom code (no):
- OS Platform and Distribution (Mac 14.2.1 (23C71) ):
- FATE Flow version (v2.1.0):
- Python version (use command: python --version):
Describe the current behavior
当数据库表 t_job 中有记录的 f_parties 字段的值有多种格式,而flow中只考虑了一种形式引起的。
我现在表中f_parties 的值如:["JG0100001100000010", "JG0100001100000000"],flow对应的代码解析时就会出错,造成query_job_list返回为空了。
问题代码:fate_flow/python/fate_flow/controller/job.py
的 224行
具体代码:
@classmethod
def query_job_list(cls, limit, page, job_id, description, partner, party_id, role, status, order_by, order,
user_name):
# Provided to the job display page
offset = limit * (page - 1)
query = {'tag': ('!=', 'submit_failed')}
if job_id:
query["job_id"] = ('contains', job_id)
if description:
query["description"] = ('contains', description)
if party_id:
query["party_id"] = ('contains', party_id)
# if partner:
# query["parties"] = ('contains', partner)
if role:
query["role"] = ('in_', set(role))
if status:
query["status"] = ('in_', set(status))
by = []
if order_by:
by.append(order_by)
if order:
by.append(order)
if not by:
by = ['create_time', 'desc']
if user_name:
query["user_name"] = ("==", user_name)
jobs, count = JobSaver.list_job(limit, offset, query, by)
jobs = [job.to_human_model_dict() for job in jobs]
lst_job = []
for job in jobs:
job['partners'] = set()
for _r in job['parties']: # job['parties']返回的数据有可能为:[{"role": "local", "party_id": ["0"]}],也有可能为["JG0100001100000000"]
if isinstance(_r, dict):
job['partners'].update(_r.get("party_id")) # 原代码中没有经过类型判断,这里是有bug的
elif isinstance(_r, str):
job['partners'].update(_r)
else:
continue
job['partners'].discard(job['party_id'])
job['partners'] = sorted(job['partners'])
if partner and str(partner) not in job['partners']:
continue
lst_job.append(job)
return count, lst_job
Describe the expected behavior
Other info / logs Include any logs or source code that would be helpful to
diagnose the problem. If including tracebacks, please include the full
traceback. Large logs and files should be attached.
- fateflow/logs/$job_id/fate_flow_schedule.log: scheduling log for a job
- fateflow/logs/$job_id/* : all logs for a job
- fateflow/logs/fate_flow/fate_flow_stat.log: a log of server stat
- fateflow/logs/fate_flow/fate_flow_schedule.log: the starting scheduling log for all jobs
- fateflow/logs/fate_flow/fate_flow_detect.log: the starting detecting log for all jobs
Contributing
- Do you want to contribute a PR? (yes/no):
- Briefly describe your candidate solution(if contributing):