diff --git a/.github/workflows/install-hadoop.sh b/.github/workflows/install-hadoop.sh index 4819566684..e9b1426bd2 100755 --- a/.github/workflows/install-hadoop.sh +++ b/.github/workflows/install-hadoop.sh @@ -9,7 +9,7 @@ sudo npm uninstall -g yarn || true sudo apt-get install -yq ssh rsync -VERSION=3.3.0 +VERSION=3.3.1 HADOOP_URL="https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&filename=hadoop/common/hadoop-$VERSION/hadoop-$VERSION.tar.gz" # download hadoop diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 58686730f2..eaf4d84648 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -82,8 +82,9 @@ jobs: conda install -n test --quiet --yes -c pkgs/main python=$PYTHON certifi if [[ "$(mars.test.module)" == "learn" ]]; then + # remove version limit when blue-yonder/tsfresh#897 is fixed. pip install xgboost lightgbm tensorflow faiss-cpu torch torchvision \ - statsmodels tsfresh + statsmodels\<0.13.0 tsfresh fi fi conda list -n test diff --git a/mars/_version.py b/mars/_version.py index 9b4765a6f9..9091fd3b60 100644 --- a/mars/_version.py +++ b/mars/_version.py @@ -16,7 +16,7 @@ import os from typing import NamedTuple, Optional -version_info = (0, 7, 3) +version_info = (0, 7, 4) _num_index = max(idx if isinstance(v, int) else 0 for idx, v in enumerate(version_info)) __version__ = '.'.join(map(str, version_info[:_num_index + 1])) + \ diff --git a/mars/services/task/supervisor/processor.py b/mars/services/task/supervisor/processor.py index 58cfe00aba..c8afcf2bb9 100644 --- a/mars/services/task/supervisor/processor.py +++ b/mars/services/task/supervisor/processor.py @@ -599,11 +599,17 @@ def get_tileable_details(self): else: status = SubtaskStatus.running + props = {slot: getattr(tileable, slot, None) for slot in tileable.__slots__} + props = {k: v for k, v in props.get('_FIELD_VALUES').items() + if k != 'key' and isinstance(v, (int, float, str))} + tileable_infos[tileable.key] = { 'progress': progress, 'subtaskCount': len(results), 'status': status.value, + 'properties': props, } + return tileable_infos def get_tileable_subtasks(self, tileable_id: str, with_input_output: bool): diff --git a/mars/services/task/tests/test_service.py b/mars/services/task/tests/test_service.py index dbcd279ee3..60777e6537 100644 --- a/mars/services/task/tests/test_service.py +++ b/mars/services/task/tests/test_service.py @@ -384,6 +384,17 @@ def _get_fields(details, field, wrapper=None): details = await task_api.get_tileable_details(task_id) assert details[r7.key]['status'] == SubtaskStatus.errored.value + contain_id_property = False + for tileable in details.keys(): + for property_key, property_value in details.get(tileable).get('properties').items(): + assert property_key != 'key' + assert isinstance(property_value, (int, float, str)) + + if property_key == 'id': + contain_id_property = True + + assert contain_id_property == True + @pytest.mark.asyncio @pytest.mark.parametrize('with_input_output', [False, True])