[BUG] Custom aggregation with shuffle method failed

Describe the bug
Custom aggregation with shuffle method failed.
To Reproduce
To help us reproducing this bug, please provide information below:

Your Python version
The version of Mars you use
Versions of crucial packages, such as numpy, scipy and pandas
Full stack of the error.
Minimized code to reproduce the error.

In [1]: import mars.dataframe as md

In [2]: import numpy as np

In [3]: import pandas as pd

In [4]: rs = np.random.RandomState(0)
   ...: raw = pd.DataFrame({'c1': np.arange(100).astype(np.int64),
   ...:                     'c2': rs.choice(['a', 'b', 'c'], (100,)),
   ...:                     'c3': rs.rand(100)})
   ...: mdf = md.DataFrame(raw, chunk_size=13)

In [5]:

In [5]: class MockReduction2(md.CustomReduction):
   ...:     def pre(self, value):
   ...:         return value + 1, value * 2
   ...:
   ...:     def agg(self, v1, v2):
   ...:         return v1.sum(), v2.min()
   ...:
   ...:     def post(self, v1, v2):
   ...:         return v1 + v2
   ...:

In [6]: mdf[['c1', 'c3']].groupby(mdf['c2']).agg(MockReduction2(), method='shuff
   ...: le').execute()

WARNING:bokeh.server.util:Host wildcard '*' will allow connections originating from multiple (or possibly all) hostnames or IPs. Use non-wildcard values to restrict access explicitly
 49%|█████████████▏             | 48.78048780487805/100 [00:01<00:01, 48.72it/s]Failed to run subtask WGGzPDYYgGUiyR5gh3xtNvaJ on band numa-0
Traceback (most recent call last):
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
Failed to run subtask iUlSlkX14X6U9njanoeWVLe4 on band numa-0
Traceback (most recent call last):
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
Failed to run subtask RiOXTm28ekGkJoMquXGtCZoB on band numa-0
Traceback (most recent call last):
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
Failed to run subtask ztnAkvOGn28ntX1AspOo5ezG on band numa-0
Traceback (most recent call last):
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
Failed to run subtask omfZl3mTar1BBvttmCpj45c6 on band numa-0
Traceback (most recent call last):
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
Failed to run subtask YnsaGX4X9X5R5dYXeByzg7Vc on band numa-0
Traceback (most recent call last):
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
Task exception was never retrieved
future: <Task finished name='Task-1010' coro=<_wrap_awaitable() done, defined at /Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/asyncio/tasks.py:677> exception=IndexError('tuple index out of range')>
Traceback (most recent call last):
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/asyncio/tasks.py", line 684, in _wrap_awaitable
    return (yield from awaitable.__await__())
  File "/Users/qinxuye/Workspace/mars/mars/deploy/oscar/session.py", line 74, in wait
    return await self._aio_task
  File "/Users/qinxuye/Workspace/mars/mars/deploy/oscar/session.py", line 666, in _run_in_background
    raise task_result.error.with_traceback(task_result.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/services/scheduling/worker/execution.py", line 223, in internal_run_subtask
    yield asyncio.shield(run_aiotask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/api.py", line 59, in run_subtask_in_slot
    return await ref.run_subtask(subtask)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/runner.py", line 90, in run_subtask
    result = yield self._running_processor.run(subtask)
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 154, in send
    return self._process_result_message(result)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/context.py", line 59, in _process_result_message
    raise message.error.with_traceback(message.traceback)
  File "/Users/qinxuye/Workspace/mars/mars/oscar/backends/pool.py", line 492, in send
    result = await future
  File "/Users/qinxuye/Workspace/mars/mars/oscar/api.py", line 111, in __on_receive__
    return await super().__on_receive__(message)
  File "mars/oscar/core.pyx", line 341, in __on_receive__
  File "mars/oscar/core.pyx", line 335, in mars.oscar.core._Actor.__on_receive__
  File "mars/oscar/core.pyx", line 247, in _handle_actor_result
  File "mars/oscar/core.pyx", line 272, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 276, in mars.oscar.core._Actor._run_actor_async_generator
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 465, in run
    result = yield self._running_aio_task
  File "mars/oscar/core.pyx", line 281, in mars.oscar.core._Actor._run_actor_async_generator
  File "mars/oscar/core.pyx", line 216, in _handle_actor_result
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 355, in run
    await self._execute_graph(chunk_graph)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 195, in _execute_graph
    await future
  File "/Users/qinxuye/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/Users/qinxuye/Workspace/mars/mars/services/subtask/worker/processor.py", line 177, in _execute_operand
    return execute(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/operand/core.py", line 347, in execute
    return executor(results, op)
  File "/Users/qinxuye/Workspace/mars/mars/core/custom_log.py", line 99, in wrap
    return func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/utils.py", line 967, in wrapped
    result = func(cls, ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 727, in execute
    cls._execute_agg(ctx, op)
  File "/Users/qinxuye/Workspace/mars/mars/dataframe/groupby/aggregation.py", line 664, in _execute_agg
    in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
IndexError: tuple index out of range
 49%|█████████████▏             | 48.78048780487805/100 [00:01<00:01, 29.71it/s]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-c24cb98c260c> in <module>
----> 1 mdf[['c1', 'c3']].groupby(mdf['c2']).agg(MockReduction2(), method='shuffle').execute()

~/Workspace/mars/mars/core/entity/tileables.py in execute(self, session, **kw)
    430
    431     def execute(self, session=None, **kw):
--> 432         result = self.data.execute(session=session, **kw)
    433         if isinstance(result, TILEABLE_TYPE):
    434             return self

~/Workspace/mars/mars/core/entity/executable.py in execute(self, session, **kw)
    102
    103         session = _get_session(self, session)
--> 104         return execute(self, session=session, **kw)
    105
    106     def _check_session(self,

~/Workspace/mars/mars/deploy/oscar/session.py in execute(tileable, session, wait, new_session_kwargs, show_progress, progress_update_interval, *tileables, **kwargs)
   1311             **(new_session_kwargs or dict()))
   1312     session = _ensure_sync(session)
-> 1313     return session.execute(tileable, *tileables, wait=wait,
   1314                            show_progress=show_progress,
   1315                            progress_update_interval=progress_update_interval,

~/Workspace/mars/mars/deploy/oscar/session.py in execute(self, tileable, show_progress, *tileables, **kwargs)
   1170         fut = asyncio.run_coroutine_threadsafe(coro, self._loop)
   1171         try:
-> 1172             execution_info: ExecutionInfo = fut.result()
   1173         except KeyboardInterrupt:  # pragma: no cover
   1174             logger.warning('Cancelling running task')

~/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/_base.py in result(self, timeout)
    437                 raise CancelledError()
    438             elif self._state == FINISHED:
--> 439                 return self.__get_result()
    440             else:
    441                 raise TimeoutError()

~/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/_base.py in __get_result(self)
    386     def __get_result(self):
    387         if self._exception:
--> 388             raise self._exception
    389         else:
    390             return self._result

~/Workspace/mars/mars/deploy/oscar/session.py in _execute(session, wait, show_progress, progress_update_interval, cancelled, *tileables, **kwargs)
   1274                 while not cancelled.is_set():
   1275                     try:
-> 1276                         await asyncio.wait_for(asyncio.shield(execution_info),
   1277                                                progress_update_interval)
   1278                         # done

~/miniconda3/envs/mars3.8/lib/python3.8/asyncio/tasks.py in wait_for(fut, timeout, loop)
    481
    482         if fut.done():
--> 483             return fut.result()
    484         else:
    485             fut.remove_done_callback(cb)

~/miniconda3/envs/mars3.8/lib/python3.8/asyncio/tasks.py in _wrap_awaitable(awaitable)
    682     that will later be wrapped in a Task by ensure_future().
    683     """
--> 684     return (yield from awaitable.__await__())
    685
    686 _wrap_awaitable._is_coroutine = _is_coroutine

~/miniconda3/envs/mars3.8/lib/python3.8/asyncio/tasks.py in _wrap_awaitable(awaitable)
    682     that will later be wrapped in a Task by ensure_future().
    683     """
--> 684     return (yield from awaitable.__await__())
    685
    686 _wrap_awaitable._is_coroutine = _is_coroutine

~/Workspace/mars/mars/deploy/oscar/session.py in wait()
     72         except AttributeError:
     73             async def wait():
---> 74                 return await self._aio_task
     75
     76             self._future_local.future = fut = \

~/Workspace/mars/mars/deploy/oscar/session.py in _run_in_background(self, tileables, task_id, progress)
    664                     await self._task_api.cancel_task(task_id)
    665             if task_result.error:
--> 666                 raise task_result.error.with_traceback(task_result.traceback)
    667             if cancelled:
    668                 return

~/Workspace/mars/mars/services/scheduling/worker/execution.py in internal_run_subtask(self, subtask, band_name)
    221             run_aiotask = asyncio.create_task(
    222                 subtask_api.run_subtask_in_slot(band_name, slot_id, subtask))
--> 223             yield asyncio.shield(run_aiotask)
    224             if subtask_info.cancelling:
    225                 raise asyncio.CancelledError

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/oscar/core.pyx in _handle_actor_result()

~/Workspace/mars/mars/services/subtask/api.py in run_subtask_in_slot(self, band_name, slot_id, subtask)
     57         """
     58         ref = await self._get_runner_ref(band_name, slot_id)
---> 59         return await ref.run_subtask(subtask)
     60
     61     async def cancel_subtask_in_slot(self, band_name: str, slot_id: int):

~/Workspace/mars/mars/oscar/backends/context.py in send(self, actor_ref, message, wait_response)
    152             if wait_response:
    153                 result = await self._wait(future, actor_ref.address, message)
--> 154                 return self._process_result_message(result)
    155             else:
    156                 return future

~/Workspace/mars/mars/oscar/backends/context.py in _process_result_message(message)
     57             return message.result
     58         else:
---> 59             raise message.error.with_traceback(message.traceback)
     60
     61     async def _wait(self,

~/Workspace/mars/mars/oscar/backends/pool.py in send()
    490             coro = self._actors[actor_id].__on_receive__(message.content)
    491             with self._run_coro(message.message_id, coro) as future:
--> 492                 result = await future
    493             processor.result = ResultMessage(message.message_id, result,
    494                                              protocol=message.protocol)

~/Workspace/mars/mars/oscar/api.py in __on_receive__()
    109             Message shall be (method_name,) + args + (kwargs,)
    110         """
--> 111         return await super().__on_receive__(message)
    112
    113

~/Workspace/mars/mars/oscar/core.pyx in __on_receive__()

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor.__on_receive__()

~/Workspace/mars/mars/oscar/core.pyx in _handle_actor_result()

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/services/subtask/worker/runner.py in run_subtask()
     88         self._running_processor = self._last_processor = processor
     89         try:
---> 90             result = yield self._running_processor.run(subtask)
     91         finally:
     92             self._running_processor = None

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/oscar/core.pyx in _handle_actor_result()

~/Workspace/mars/mars/oscar/backends/context.py in send()
    152             if wait_response:
    153                 result = await self._wait(future, actor_ref.address, message)
--> 154                 return self._process_result_message(result)
    155             else:
    156                 return future

~/Workspace/mars/mars/oscar/backends/context.py in _process_result_message()
     57             return message.result
     58         else:
---> 59             raise message.error.with_traceback(message.traceback)
     60
     61     async def _wait(self,

~/Workspace/mars/mars/oscar/backends/pool.py in send()
    490             coro = self._actors[actor_id].__on_receive__(message.content)
    491             with self._run_coro(message.message_id, coro) as future:
--> 492                 result = await future
    493             processor.result = ResultMessage(message.message_id, result,
    494                                              protocol=message.protocol)

~/Workspace/mars/mars/oscar/api.py in __on_receive__()
    109             Message shall be (method_name,) + args + (kwargs,)
    110         """
--> 111         return await super().__on_receive__(message)
    112
    113

~/Workspace/mars/mars/oscar/core.pyx in __on_receive__()

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor.__on_receive__()

~/Workspace/mars/mars/oscar/core.pyx in _handle_actor_result()

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/services/subtask/worker/processor.py in run()
    463         self._running_aio_task = asyncio.create_task(processor.run())
    464         try:
--> 465             result = yield self._running_aio_task
    466             raise mo.Return(result)
    467         finally:

~/Workspace/mars/mars/oscar/core.pyx in mars.oscar.core._Actor._run_actor_async_generator()

~/Workspace/mars/mars/oscar/core.pyx in _handle_actor_result()

~/Workspace/mars/mars/services/subtask/worker/processor.py in run()
    353             try:
    354                 # execute chunk graph
--> 355                 await self._execute_graph(chunk_graph)
    356             finally:
    357                 # unpin inputs data

~/Workspace/mars/mars/services/subtask/worker/processor.py in _execute_graph()
    193                                                            self._datastore, chunk.op)
    194                 try:
--> 195                     await future
    196                     logger.debug('Finish executing operand: %s,'
    197                                  'chunk: %s, subtask id: %s', chunk.op, chunk,

~/miniconda3/envs/mars3.8/lib/python3.8/concurrent/futures/thread.py in run()
     55
     56         try:
---> 57             result = self.fn(*self.args, **self.kwargs)
     58         except BaseException as exc:
     59             self.future.set_exception(exc)

~/Workspace/mars/mars/services/subtask/worker/processor.py in _execute_operand()
    175                          ctx: Dict[str, Any],
    176                          op: OperandType):  # noqa: R0201  # pylint: disable=no-self-use
--> 177         return execute(ctx, op)
    178
    179     async def _execute_graph(self, chunk_graph: ChunkGraph):

~/Workspace/mars/mars/core/operand/core.py in execute()
    345             # The `UFuncTypeError` was introduced by numpy#12593 since v1.17.0.
    346             try:
--> 347                 return executor(results, op)
    348             except UFuncTypeError as e:  # pragma: no cover
    349                 raise TypeError(str(e)).with_traceback(sys.exc_info()[2]) from None

~/Workspace/mars/mars/core/custom_log.py in wrap()
     97
     98         if custom_log_dir is None:
---> 99             return func(cls, ctx, op)
    100
    101         log_path = os.path.join(custom_log_dir, op.key)

~/Workspace/mars/mars/utils.py in wrapped()
    965
    966         try:
--> 967             result = func(cls, ctx, op)
    968         finally:
    969             if prev_default_session:

~/Workspace/mars/mars/dataframe/groupby/aggregation.py in execute()
    725                 cls._execute_combine(ctx, op)
    726             elif op.stage == OperandStage.agg:
--> 727                 cls._execute_agg(ctx, op)
    728             else:  # pragma: no cover
    729                 raise ValueError('Aggregation operand not executable')

~/Workspace/mars/mars/dataframe/groupby/aggregation.py in _execute_agg()
    662             if agg_func_name == 'custom_reduction':
    663                 input_obj = tuple(cls._get_grouped(op, o, ctx) for o in in_data_dict[output_key])
--> 664                 in_data_dict[output_key] = cls._do_custom_agg(op, custom_reduction, *input_obj)[0]
    665             else:
    666                 input_obj = cls._get_grouped(op, in_data_dict[output_key], ctx)

IndexError: tuple index out of range

The code comes from https://github.com/mars-project/mars/blob/fb125ab2e2cc7be18cc6504a53f58df83b4b9d12/mars/dataframe/groupby/tests/test_groupby_execution.py#L309-L311
where the method specified with shuffle.

Other failed case:
https://github.com/mars-project/mars/blob/fb125ab2e2cc7be18cc6504a53f58df83b4b9d12/mars/dataframe/groupby/tests/test_groupby_execution.py#L348-L350
https://github.com/mars-project/mars/blob/fb125ab2e2cc7be18cc6504a53f58df83b4b9d12/mars/dataframe/groupby/tests/test_groupby_execution.py#L361-L363
https://github.com/mars-project/mars/blob/fb125ab2e2cc7be18cc6504a53f58df83b4b9d12/mars/dataframe/groupby/tests/test_groupby_execution.py#L365-L367
Also failed when method='shuffle'


Bump Bootstrap to fix xss vulnerability

Checklist

[x] Appropriate branch selected (all PRs must first be merged to dev before they can be merged to master)
[x] Any modified or new methods or classes have helpful JSDoc and code is thoroughly commented
[x] The description lists all applicable issues this PR seeks to resolve
[x] The description lists any configuration setting(s) that differ from the default settings
[x] All tests and CI builds passing

Description
Bump Bootstrap to 3.4.1 to fix vulnerability identified by GitHub alert: https://blog.getbootstrap.com/2019/02/13/bootstrap-4-3-1-and-3-4-1/

Codecov Report

Merging #433 into dev will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##             dev    #433   +/-   ##
=====================================
  Coverage    5.3%    5.3%
=====================================
  Files        322     322
  Lines      15468   15468
  Branches    4674    4674
=====================================
  Hits         820     820
  Misses     12496   12496
  Partials    2152    2152

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a6c167b...04ca6d0. Read the comment docs.

:tada: This PR is included in version 4.1.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Update the Prometheus image to v2.0.0

What this PR does / why we need it:
This PR updates the Prometheus image to the latest table version.
Which issue this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged): fixes #
Special notes for your reviewer:
I haven't tested it yet but it should be relatively safe. The CLI flags have been updated to match with the v2.0.0 version.
Release note:

@simonpasquier: Adding do-not-merge/release-note-label-needed because the release note process has not been followed.

One of the following labels is required "release-note", "release-note-action-required", or "release-note-none".
Please see: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed.
Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Hi @simonpasquier. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/ok-to-test

@simonpasquier: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
58950c76491dbc4e848f11f7fa384ddd7569437e
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test istio-pilot-e2e

/lgtm


Why are change events caught so aggressively?

I'm using a generic approach to listen on all inputs for change events to warn the user if there are unsaved changes etc. but this component makes it impossible to trigger such events because it catches them all and immediately stops propagation. I don't see any reason for hiding those events from the parents.
(Yes i know the dp.change event, but my parent form would have to know all kinds of change events that could possibly mean that the use changed something).

perhaps a different picker would suit your needs better

I mean i love the component, I just wanted to know whether those two lines are really needed.
           change = function (e) {
                var val = $(e.target).val().trim(),
                    parsedDate = val ? parseInputDate(val) : null;
                setValue(parsedDate);
                //e.stopImmediatePropagation();
                //return false;
            },

If I remove them, the component works just like before and parent components are now able to capture change events in the common way to.


add -dynamic-destination flag

Hi!
We've a setup where multiple services should be available in the destination host. This flag allow the client to select the desired port in the PROXY protocol header.
Of course, the client should be trusted for this to work without security issues (in our case, its our frontal TCP reverse-proxy).
Any comment is welcome, and thanks for this helpful little tool! ;)

By @Xfennec at https://github.com/path-network/go-mmproxy/pull/15

Thanks for the merge!
It may not be the right place for that, but can you explain the difference between path-network/go-mmproxy and kzemek/go-mmproxy repositories?


unevaluatedProperties: deep dynamic + refs

This adds more tests to cover deep dynamic tracing of unevaluated
properties inside references.
Also a separate test for cyclic refs.
This covers multiple paths in impl I wrote that were not covered by the existing tests at all.
I attempted to keep this minimal, it introduces only two schemas.
cc @karenetheridge

@ssilverman The problem is that the formatting in the rest of the file is inconsistent, this is why I never finished this.

Reformatted the newly added section, didn't touch the rest of the file.
Also rebased and added this to 2020 and future.

Landing per the above approval.
These were not covered by https://github.com/json-schema-org/JSON-Schema-Test-Suite/pull/472 and https://github.com/json-schema-org/JSON-Schema-Test-Suite/pull/411.


Where does the CBO/CMO specification live?

This repo has been archived, and the content doesn't seem to have been moved into this repo. Where am I supposed to report/fix issues?
In particular this ambiguity needs to be written into the actual spec, rather than spec-by-github-comment. Also the value to write to mtval for exceptions needs to be specified.

Please submit your recommended change as a PR against the riscv-isa-manual CMO chapter, thanks.  Add a reference back to this issue in the original repo.

Ah ha that's embarrassing - I don't know why I couldn't find that chapter when I searched! Thanks!


[WIP][Dev] Adds loki

Another angle of attack vs #979

^ maybe 4x or 8x faster than reality
Adds Loki, which does visual regression tests for React Native components. It does this by connecting to a running copy of storybooks ( the same way my vscode extension does) and then looping through all the stories and generates an image for them.
This is slow, like too slow for me to watch slow, I wonder if there are ways to improve, but there's something of value here.

Closing for now, as I've not looked at this in a year


tableVersion in 'vhea' is confusing

I got a dump of 'vhea' table from SourceHanSans-Regular.otf like this:
<?xml version="1.0" encoding="UTF-8"?>
<ttFont sfntVersion="OTTO" ttLibVersion="3.0">

  <vhea>
    <tableVersion value="1.0625"/>
...

It says the version is 1.0625, while this font has a 'vhea' table with version 1.1 (0x00011000).
"Version Numbers" section in the OpenType spec states as below.

When a Fixed number is used as a version, the upper 16 bits comprise a major version number, and the lower 16 bits a minor. Tables with non-zero minor version numbers always specify the literal value of the version number since the normal representation of Fixed numbers is not necessarily followed. For example, the version number of 'maxp' table version 0.5 is 0x00005000, and that of 'vhea' table version 1.1 is 0x00011000.

Ouch!
Note that OpenType is not consistent about this. For example, GDEF table version 1.2 uses 0x00010002:
https://www.microsoft.com/typography/otspec/gdef.htm
Maybe we should remove the float conversion and go back to pure hex.

'head' table is also affected; though that one has only one version.

In the opentype-gx branch I changed Version of GSUB/GPOS/... to always be hex.  The ones reported in this issue still remain broken.
https://github.com/behdad/fonttools/commit/56c0a784d2da52c2ec125c0e1392e51d24b38f5c

Fixed in #711


Node 14 - Knex PG can't connect

Environment
Knex version: 0.20.13
Database + version: pg, 12.1
OS: MacOS Catalina
Bug

Explain what kind of behaviour you are getting and how you think it should do

Migrating and even querying does not work with node 14

Error message

➜  api git:(master) ✗ nvm use 10
Now using node v10.18.0 (npm v6.13.4)
➜  api git:(master) ✗ knex migrate:latest --env development
Requiring external module ts-node/register
Using environment: development
Already up to date
➜  api git:(master) ✗ nvm use 14
Now using node v14.1.0 (npm v6.14.4)
➜  api git:(master) ✗ knex migrate:latest --env development
Requiring external module ts-node/register
Using environment: development
KnexTimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
    at Client_PG.acquireConnection (/PROJECT_ROOT/node_modules/knex/lib/client.js:347:26)
    at async Promise.all (index 1)

Reduced test code, for example in https://npm.runkit.com/knex or if it needs real
database connection to MySQL or PostgreSQL, then single file example which initializes
needed data and demonstrates the problem.

TODO (sorry, haven't had time to do it yet)

@nahtnam This appears to be an issue with node-postgres, not with Knex, and should be fixed in already, just use  pg v8.0.3 or higher.

Didn't realize that, thank you!


Double file release

@adkinsjd, I'm having a problem where, when I run my dask-based multiple ecmwf funtion, I'm getting a double release on the temp file when we zarr cache? Exception: "FileNotFoundError(2, 'No such file or directory')
We do do:

Write temp nc file
Open ds with xarray from nc file
Delete nc file
Write ds to zarr cache

I thought the problem might be some lazy loading in step (2), so I tried adding a ds.close() between 2&4, but it didn't fix.
Autocaching result for gs://sheerwater-datalake/caches/single_iri_ecmwf/forecast_global1_5_control_2015-06-22_precip.zarr.
2024-08-09 00:03:53,137 - distributed.worker - WARNING - Compute Failed
Key:       ('xarray-precip-65fb32d64028a35c56a11f9d6d85041d', 0, 0, 0, 0)
State:     executing
Function:  getter
args:      (ImplicitToExplicitIndexingAdapter(array=MemoryCachedArray(array=CopyOnWriteArray(array=LazilyIndexedArray(array=<xarray.backends.netCDF4_.NetCDF4ArrayWrapper object at 0x28cb34d80>, key=BasicIndexer((slice(None, None, None), slice(None, None, None), slice(None, None, None), slice(None, None, None))))))), (slice(0, 46, None), slice(0, 1, None), slice(0, 121, None), slice(0, 240, None)))
kwargs:    {}
Exception: "FileNotFoundError(2, 'No such file or directory')"
Traceback: '  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/dask/array/core.py", line 118, in getter\n    c = np.asarray(c)\n        ^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 573, in __array__\n    return np.asarray(self.get_duck_array(), dtype=dtype)\n                      ^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 576, in get_duck_array\n    return self.array.get_duck_array()\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 836, in get_duck_array\n    self._ensure_cached()\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 830, in _ensure_cached\n    self.array = as_indexable(self.array.get_duck_array())\n                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 787, in get_duck_array\n    return self.array.get_duck_array()\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 650, in get_duck_array\n    array = self.array[self.key]\n            ~~~~~~~~~~^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 100, in __getitem__\n    return indexing.explicit_indexing_adapter(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/core/indexing.py", line 1014, in explicit_indexing_adapter\n    result = raw_indexing_method(raw_key.tuple)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 112, in _getitem\n    original_array = self.get_array(needs_lock=False)\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 91, in get_array\n    ds = self.datastore._acquire(needs_lock)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/backends/netCDF4_.py", line 411, in _acquire\n    with self._manager.acquire_context(needs_lock) as root:\n  File<EMAIL_ADDRESS>line 137, in __enter__\n    return next(self.gen)\n           ^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/backends/file_manager.py", line 199, in acquire_context\n    file, cached = self._acquire_with_cache_info(needs_lock)\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "/Users/avocet/content/subseasonal_world/.venv/lib/python3.12/site-packages/xarray/backends/file_manager.py", line 217, in _acquire_with_cache_info\n    file = self._opener(*self._args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File "src/netCDF4/_netCDF4.pyx", line 2470, in netCDF4._netCDF4.Dataset.__init__\n  File "src/netCDF4/_netCDF4.pyx", line 2107, in netCDF4._netCDF4._ensure_nc_success\n'

I think maybe the right fix is to call ds.persist() in the single file function, after opening and before writing out to zarr, forcing the data into memory and hopefully breaking the link with the netcdf file. Does this seem right to you?
https://docs.xarray.dev/en/stable/user-guide/dask.html

Okay, we can close this PR - this isn't an issue with sheerwater. Cachable functions just need to be in a valid state when they return. For me, this required manually closing the file opened during open_dataset, before returning.


mention DO_NOT_TRACK=1

see the effort at:
https://consoledonottrack.com/
https://github.com/sneak/consoledonottrack.com

Thanks for bringing this project to my attention! I'm not sure how I missed this proactive effort before.
I've added a link to the readme and I plan to expand telemetry definitions with examples mention on their site.

Great :) you can see more info for some of the definitions in:
https://github.com/sneak/consoledonottrack.com/issues/2
see also the discussion about "Awesome Do Not Track List" as your project does in:
https://github.com/sneak/consoledonottrack.com/issues/8


strip-phf + alias

oh, current target is 1.63. I will fix it later when this patch will be actually going to be merged.

As per https://github.com/progval/unicode_names2/pull/21#issuecomment-1702266813 I'm giving up on changing the PHF, at least for now. Let's go back to #12. Thanks for working on this PR, though


Add list of policies for each version

With this, Porta will be able to show a different list of policies based on the version of APIcast deployed.

@porueesq those are already released policies. We are not going to change those descriptions.
Feel free to open PRs to change any of the policy schemas on the master branch: https://github.com/3scale/APIcast/search?q=filename%3Aapicast-policy.json&unscoped_q=filename%3Aapicast-policy.json

@mikz @davidor Given that this is not the first time that happens, what's the purpose of requesting reviews from the Docs team if you are merging the changes before we have time to send the comments? Perhaps if you let us know with in advance, we can organize our tasks to provide you a better service.

@porueesq I will merge your changes in a separate PR. We cannot change the schemas of previous versions. However, The ones that you reviewed still exist, so we will merge those changes and the fixed descriptions will appear in the UI in the next release.

Thanks @davidor :)

@porueesq the requested review is automatic because you are set to be the code owner of doc folder of the repo. https://github.com/3scale/APIcast/blob/master/.github/CODEOWNERS

@porueesq https://github.com/3scale/APIcast/pull/1020

@mikz Great to know that we are involved!
What I've seen is that a review is requested, we comment, and then we are told that our comments won't be applied.
We just need some time to review the content to provide relevant contributions. In case you have time constraints, please let us know.


encode a clip

How can I encode a clip without (choice)?

Unclear if this is a rendering issue or an encoding issue. Could you please elaborate?

The term "clip" is confusing.  Do you mean parenthesis?
To capture attributes of the accidental, it should be encoded using , not @accid.  For example,
<note pname="b" dur="4" oct="4">
  <accid accid="n" enclose="paren"/>
</note>

Thank you for your answer!
I mean here parenthesis.
Excuse me please
Because I can not English well,I badly translated into English.
I think that's rendering issue.
Although we have properly coded, in Verovio is not displyed correctly.
2015-12-17 19:42 GMT+01:00 pe-ro<EMAIL_ADDRESS>
The term "clip" is confusing. Do you mean parenthesis?
To capture attributes of the accidental, it should be encoded using , not
@accid. For example,

—
Reply to this email directly or view it on GitHub
https://github.com/music-encoding/music-encoding/issues/291#issuecomment-165543832
.

--
Shino Funayama (舟山 詩乃)
Post: Greiteler Gärten 14
33102 Paderborn
Email<EMAIL_ADDRESS>Telefon: 0176 20 44 70 33


How long host was down in notification

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
New Notification
🔖 Feature description
I would like to know how long an host was down when I receive the notification that it’s up again
✔ Solution
Add in the notification the downtime
❓ Alternatives
No response
📝 Additional Context
No response

I really hope it can be added also I'm only receiving when host is down, never receive notifications when it's up again.

@ramymoh please open another ticket in the help category.
This is not the corrrect issue to discuss this.

@honestlai
Please refrain from posting +1 / requests for updates things on issues, as this makes issue-management harder.
Issues are for discussing what needs to be done how by whom.
We use 👍🏻 on issues to prioritise work.

Related to this issue is the ability to format messages send.
#1529 #2661 https://github.com/louislam/uptime-kuma/issues/2617 https://github.com/louislam/uptime-kuma/issues/2387 and more (see #646 for a deeper discussion)


outline type in logo

The logo isn't showing in safari, and it looks like a problem with the typeface. I've converted the type to outlines and I think it's all OK now!
This should go out with the next release if possible.
cc @msecret

before

after

We could potentially patch just this change in as a quick fix too, I'll look into that


Fix truncated basepath

Supersedes #3337. Ensures that requests for /basepath (where paths.base === '/basepath) resolve correctly (the existing tests didn't catch this because of trailingSlash: 'always').
This doesn't fix static asset handling, which is a bit finicky — will open a separate PR for that.
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
[x] This message body should clearly illustrate what problems it solves.
[x] Ideally, include a test that fails without this PR but passes with it.

Tests

[x] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

[x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpx changeset and following the prompts. All changesets should be patch until SvelteKit 1.0

Getting static assets to work with svelte-kit dev is indeed tricky. What I've tried:

In my original changes, I simply set $app/paths.assets to be empty in the build; Vite was already serving the assets from the root path, so as long as every asset use is prefixed by $app/paths.assets, everything works. Of course, this breaks if asset paths are hardcoded, relative, etc. These cases were already broken.
Change Vite's base path - right now it's hardcoded to /. Changing it to config.kit.paths.base + '/' seems to work (in my limited testing) if I hack the base path back in before sending it to the router for SSR - assets are correctly served from paths.base. But it fails if the user has a custom paths.assets, because the app is built with the asset path as /_svelte_kit_assets, but the assets are served from paths.base/svelte_kit_assets. We could change the asset path in the app build, but then it breaks parity with svelte-kit preview. We could also use a combination of that scheme and the existing one, depending on whether paths.assets is set, but that sounds like a mess.
Serve the static assets "by hand", rather than having Vite do it for us. svelte-kit preview already does this. Honestly, I don't know enough about Vite to know what the tradeoffs are here.


Make prognostic run dev environment work with application default credentials

The prognostic run development enviroment (docker-compose) needs service account credentials. It should be possible to use with the keys configured by google auth application-default login.

Is this resolved by deleting the docker-compose.yml?

The solution is to bind-mount in these keys: ~/.config/gcloud/application_default_credentials.json and point to it with the GOOGLE_APPLICATION_CREDENTIALS. Either that or bind-mount in the whole ~/.config/gcloud folder.

OK, the top-level docker system already does that so this should be handled by deleting docker-compose.yml in #1837 and replacing it with the top-level enter target.

Resolved by #1837.


Pay someone - User is signed out after verifying account during pay someone flow

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 9.0.45-2
Reproducible in staging?: Y
Reproducible in production?: N/A - new feature, doesn't exist in prod
Issue was found when executing this PR: https://github.com/Expensify/App/pull/50169
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Issue reported by: Applause Internal Team
Action Performed:

Go to staging.new.expensify.com
Log in with a new Gmail account.
Complete the onboarding.
Open DM with any user.
Click + > Pay someone.
Select currency in USD, enter amount and click Next.
Click Pay with Expensify.
Enter the correct magic code.

Expected Result:
User will not be signed out after verifying account during pay someone flow.
Actual Result:
User is signed out after verifying account during pay someone flow.
Workaround:
Unknown
Platforms:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
https://github.com/user-attachments/assets/07ce4b74-bdbb-456e-80f3-604cc36cb631

View all open jobs on GitHub

I reproduced on staging v9.0.45-2 and not on prod v9.0.44-12 (the original bug from https://github.com/Expensify/App/issues/49523 is still present).

This is actually not reproducible in dev with the latest changes on main.

We discussed this issue here in https://github.com/Expensify/App/issues/48041#issuecomment-2394985903 since that was the issue which introduced the new validation route logic.
Looks like the cause of the logout is/was that when we input the magic code, one of the API endpoints is called with the old / outdated authToken from when the account was not validated.
The issue seems unrelated to the PR I reviewed and more related to the PR that introduced the new validation route logic.
If we were to follow-up with a fix and pinpoint the offending PR, that would be https://github.com/Expensify/App/pull/49230 even if the logout issue did not pop-up while testing issue https://github.com/Expensify/App/issues/48041.
The fix for this should be something along the lines of making sure that once the magic code was provided in the new route, we make sure to clear the old authToken before making any API calls post-validation.
This can be done either on FE or BE.
Please, correct me if any of my above statements are wrong!

This is actually not reproducible in dev with the latest changes on main.

I'll have to double check, but if the issue is indeed not reproducible anymore, can we assume that this was fixed from the BE side ? 🤔

I can't verify locally, but reverting https://github.com/Expensify/App/pull/50169 would probably restore the behavior on prod (the not found page). However, I'm not sure that's really "better" than what we have now (forced logout but working after logging back in). I think the best path forward is to not block on this and use this issue to investigate and fix the problem.

That's right, unfortunately I only tested the actual validation post-merge :trollface:

@ikevin127 based on my investigation, this appears to be a backend issue. It seems that the Onyx key credentials isn’t being populated with the autoGeneratedLogin and autoGeneratedPassword values during the sign-up process.

As I mentioned in offending issue https://github.com/Expensify/App/issues/49523#issuecomment-2400732507:

@isabelastisser Yes, we had the following regression:

https://github.com/Expensify/App/issues/50284

which was caused by lack of testing on both PR reviewer and author sides. The issue mentioned above is open for proposals, unless the author wants to fix the issue given that we're still within the regression period.
Note: The issue was that we relied on the other PRs implementation of the new route without actually testing if the implementation works, ignoring this issue's Expected result which states Add bank account page should open as we stopped the testing at "seeing the magic code input showing up in RHP".

So unless the author wants to fix this, we're open for proposals. Peace out ✌

Okay the credentials (partnerUserID and secret) are cleared by the SignUpUser command since we added the unvalidated sign up flow in this PR.
I'm not sure what's the correct way to handle this in product validation flow. I'm going to start a discussion about it.

Thanks @arosiclair please link the discussion here so it's clear what the status is for us following along.

Started the discussion here

Thanks!

https://github.com/Expensify/App/issues/50284#issuecomment-2411871878

No more updates for this yet. Focusing on the analytics project.

Should we put this on hold then @arosiclair / update the priority to weekly?

Made some more progress today. Everything's working now I just need to finalize the Web and App PRs.

Web PR is out for review.

$250 approved for @sobitneupane


New tag

Hi! Would you mind tagging this, as there are 166 commits since v2.1.0.
Thanks in advance,
Leandro

Negative. Much work to be done before next major release. Changes in master are not backwards compatible so we are working towards v3.


Update README.md

@sugata98 thanks 👍

You're Welcome! I will try to add problems and solutions myself when I make some. Do we have to devise our own problems, or we can post problems from other sites here?

@sugata98 it's free you can add problems and solutions or even problems and open it as Issue  👍


We want to be able to display the exception UUID to the RollbarExceptionHandler, but not send it to rollbar twice.

Currently we basically use the hash code to keep track of the thrown exception in a dictionary, and will return the same payload again upon trying to re-throw the same exception.


Add and expose cell metadata to match JupyterLab

Feature: Notebook Editor, Interactive Window, Python Editor cells

Description
It would be useful to add metadata to cells and expose it in the execute_request, as is now done e.g. in Jupyter Lab.
A cell in JupyterLab currently passes the following metadata to execute_request:
{"deletedCells":[],"recordTiming":false,"cellId":"1e9aac6b-cee9-4786-813b-df30c0debc38"}

Mostly, I'm interested in having cellId, which is a UUID for the cell that doesn't change on execute.
This allows to implement custom compilation in some custom kernels, eg. to fake a REPL in a compiled language, extensions that run a specific cell etc.
I think passing the metadata to execute would be done around here, but I'm not sure how to add metadata to every cell?
Note that in JupyterLab this metadata is not added to the notebook file, but is only added at runtime.
Microsoft Data Science for VS Code Engineering Team: @rchiodo, @IanMatthewHuff, @DavidKutu, @DonJayamanne, @greazer, @joyceerhl

Thanks for the suggestion.
Yes that location you specified would be the first spot to pass the metadata down to the kernel. We'd also have to wire it into the actual kernel message further down a layer or two.
Although cell id isn't part of the metadata we normally have. Do you know if there's an agreed upon list of extra data that Jupyter passes? (Meaning is it documented somewhere so that it's common to all kernels)

Thanks for the reply.
I'm sorry, I don't think there's a documented list anywhere. The notebook format does defines some cell metadata but I'm not sure about how used they are in practice.
JupyterLab added cellId in this PR a couple years ago, and recently there's been some discussion to standardize it (see eg discussion here , and https://github.com/jupyter/nbformat/issues/148 , and https://github.com/nteract/papermill/pull/483#issuecomment-606911620 )
I think what we could do is:

expose metadata to kernel for all messages, since it's optional but still part of the message spec
pass cell.metadata  as the metadata field in execute_request, complete_request,... etc
match jupyterlab behavior wrt provided cell metadata, at least where they're not specific to jupyterlab features

I might give this a try myself, although I'm not much of a Typescript developer.
Anything specific for development of jupyter features that is not in CONTRIBUTING.md ?

CONTRIBUTING.md  is pretty close to what I do every PR.
Basically

Install node
Install the 'prettier' extension in VS code (this lets you fix hygiene errors by just saving stuff)
Fork repo and create branch
npm install
Open vscode in root folder
Hit CTRL+SHIFT+B and run the two compile tasks
Start coding
Submit branch as a PR

If you're adding the cell metadata, our cell id is not a guid at the moment. It's just a number. Not sure if you need it to be unique for all notebooks or if it can be unique per kernel. That would be a bigger change (to make it a guid).

Thanks for the pointers! I'll give it a try as soon I have some free time.
Regarding the cell id, I'm fine with it being a number, as long as it doesn't change while the notebook is open.
For now, my plan is to keep it as is, and leave making it a guid for the future, eg. if the nbspec ends up making that a standard.

I gave this a try, see exposemetadata branch.
It works, but I'm not sure if I should change the definitions of the functions up the chain, eg. handleCodeRequest, executeObservable, executeObservableImpl, execute etc etc.
I gave that a try on this branch but I think I got a little lost and overdid it.
Anyway, I'm going to continue on the first approach, which seems simpler and less invasive, and add pass the metadata to inspect and complete, and then open up a PR. Sounds good?

I don't think you can put the metadata into the cellFactory methods. Those are likely used elsewhere and will mess up the output of someone's notebook when saved. I think you need to only generate this extra metadata (cell id) when making the request.

Makes sense. I changed it so that cellId is not added to the cell's metadata, instead an object that is created from the cell metadata and the cell id, and that is passed as metadata, see here.

Yeah that looks good. Please submit the PR if that's sufficient for your needs.


[Feature Request] Add more support for content from other sites

Hi,
I was wondering if you could add support for content from Mega, Erome, etc? I think that would help a lot.
Cheers.

Hi,
could you add or send me a sample blog, preferably a small one? I don't even know what erome is, and searching a whole lot of Tumblr blogs just to find proper inlined erome URLs is something I think I cannot do right now.

Unfortunately I don't have a sample blog of erome - however, I have a perfect example of a mega URL - the blog is NSFW so I must give you a NSFW warning but it is at: https://isj819.tumblr.com

Continuation of #196 #183.


WIP: Bump k8s module versions to v1.27

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
I upgraded k8s module versions to v1.27 because I prefer to use v1.27 module in kueue v0.4.
But if @trasc has already worked in progress, I will close this PR.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?

Since it seems that the ComponentConfig doesn't work correctly, we need to work on https://github.com/kubernetes-sigs/kueue/issues/725, at first.

@trasc Are you trying to upgrade k8s module versions? If so, I can close this PR.

@trasc Are you trying to upgrade k8s module versions? If so, I can close this PR.

Yes I have something ongoing as part of #856, not very advanced , anyway  I'll take #725 for now.

@trasc Are you trying to upgrade k8s module versions? If so, I can close this PR.

Yes I have something ongoing as part of #856, not very advanced , anyway I'll take #725 for now.

Also, can we merge commits into the main branch #725 -> this PR -> #856 in that order?

Also, can we merge commits into the main branch #725 -> this PR -> #856 in that order?

For sure #725 should be first. We should check if we need both (this and #856)  and in which order after.

Also, can we merge commits into the main branch #725 -> this PR -> #856 in that order?

For sure #725 should be first. We should check if we need both (this and #856) and in which order after.

I have already checked that this PR will work fine if #726 is resolved.

So did I for #856, also #856 contains some changes to the config that I needed vX.27.3, and is based on #889 already.
(the work on jobset is also on hold waiting for #856).
We should go:
#889
#856
#880
/hold

In favor of #880.
/hold cancel
/close


Fix build on windows

This fixes the build on windows, where new URL("deno.json", import.meta.url).pathname starts with /C:/ which isn't a valid path.
First time with deno, so not sure this is idomatic.

Updated to use fileURLToPath which looks like a better fix.

Ok indeed, your previous suggestion actually changed behavior but this looks good. Not a huge fan of starting to rely on node.js APIs, but for builds I think it's ok. Let me quickly check if this doesn't break anything on other platforms.

Looks good. Thanks!

Still new to Deno, but I think this could have been done with toFileUrl to avoid dependency on the Node API.


[THORN-1876] Use the trace level to log the message that no security realm is configured

This branch became out of date but since the only change was about changing the log level I proceeded with the merge


NullReference Exception in DialogHost.Show

when I call await DialogHost.Show(someVM, DialogHostIdentity) I've gat an agregation exception with NullReferenceException in it
full stactrace
System.AggregateException: One or more errors occured. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   in MaterialDesignThemes.Wpf.DialogHost.IsOpenPropertyChangedCallback(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
   in System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   in System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   in System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   in System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   in System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   in System.Windows.DependencyObject.SetCurrentValue(DependencyProperty dp, Object value)
   in MaterialDesignThemes.Wpf.DialogHost.<Show>d__24.MoveNext()

The call is made from UI thread (command execute handler. I think it should be UI thread)
someVM has a datatemplate
<DateTemplate TargetType="{x:Type SomeVMType}">
<SomeVmView DataContext={Binding}/>
</DateTemplate>

Hey, do you have a repo to reproduce this?

No problem from your side.
Exception occured due to redefined style for DialogHost(Redefined it to disable shadowdepth as it has no effect, only cause load). In redefied template there is no element with name "PART_PopupContentElement" so _popupContentControl field is null. This cause the eception
But I think you could validate a template to have required data in ApplyTemplate.

OK.
I can probably get DialogHost to use ShadowAssist to save you re-templating.  If you desire raise an issue, cos it seems a reasonable requirement to help with performance.

May be you understand me incorrectly. I removed the ShadowAssist.ShadowDepth.
As the bacground is already shadowed and transparent.

OK.


Feature/unify fxml version

This unifies the version of the FXML documents to version 8.0.111.

Merge had to be done because there were conflicts with the base branch after merging pull request #10.


Handle scalar with Krnl

I discovered this issue when working on yolov5 model.  I got error: Expected positive number of original loops.
The model has some scalars with type tensor<f32> or tensor<i64>. Tense with scalar type is needed because some ops, for example, Clip, require scalar input. Moreover, some shape related ops, such as Squeeze/Unsqueeze, behave differently between tensor and tensor<1xi64>. Therefore, we can not convert scalar type to tensor with one element.
The issue with scalar type is how we access it. We build loops of Krnl to iterate the element in a tensor: the number of loops is determined by type.getShape().size(). For scalar, the value of this expression is 0.
We have to handle this special case in IndexExpr and Krnl: How to generate loop and how to access the elements?

@chentong319

I got error: Expected positive number of original loops.

That error cannot be eliminated. Basically, the program is trying to do a loop structure with 0 or fewer loop nest. That is simply not allowed.

We build loops of Krnl to iterate the element in a tensor: the number of loops is determined by type.getShape().size(). For scalar, the value of this expression is 0.

Note that no matter the scheme, the number of loops needs to be known at compile time. If that is the case, then you need to isolate the case with 0 loop nests, and if not zero, you can construct an iterate where the number of loops is an arbitrary compile-time constant. Look at the higher level interfaces, such as
  // Lambda passes loop indices as 2nd parameter.
  void iterate(ValueRange originalLoops, ValueRange optimizedLoops,
      ValueRange lbs, ValueRange ubs,
      function_ref<void(KrnlBuilder &createKrnl, ValueRange indices)>
          bodyBuilderFn);

  // Lambda passes loop indices as 2nd parameter.
  void iterateIE(ValueRange originalLoops, ValueRange optimizedLoops,
      ArrayRef<IndexExpr> lbs, ArrayRef<IndexExpr> ubs,
      function_ref<void(KrnlBuilder &createKrnl, ValueRange indices)>
          bodyBuilderFn);

functions in KrnlHelper.hpp. Both take lists of values or index expressions.
If you want to handle runtime numbers, then there is generally two approaches. First is a switch statement:
switch (num) {
case 0: code for no loops
              break;
case 1: code for one loop
              break;
...
default:
           exit(1);
}

Or one can devise a recursive approach, where you do recursions to handle each level of iterations. Handling memory loads/store also become interesting, as presumably the access functions are also proportional to the dynamic number of loops... If we think hard enough, maybe we can do tail recursion elimination and generate a smart while loop with stacks of iteration indices... Not impossible but harder.
An alternative solution that does not recursion works for loops that are all rectangular.
num_of_element = product of  extend of the "n" loops (where "n" is only known at runtime)
for(i=0; i<num_of_element; ++i) {
  calculate the indices for each of the "n" indices (for loop dividing i by the sizes of the extend along each dimensions) and putting it in a list.
  perform computations using this list of indices
}

I don't think we are ready for this, because with unranked tensors, a lot of things will break at this time.

The semantics of scalar type is simple:  there  is always only one element in the tensor.
The problem is how we handle scalar type uniformly with "real" tensor. I am thinking of providing a set of interface that treat scalar as one-element tensor, perhaps under the hood of IndexExpr. We just need to be careful to use the original type info for graph-level and hopefully we do not need to change lowering to Krnl that much. We can discuss this issue at group meeting.

Regarding loop creation, it seems not related to IndexExpr. We are defining a nested loop with a given number createKrnl.defineLoops(numberOfLoops), so it is clearly that users of krnl need to know numberOfLoops, and should check if it it zero or not, except we need to change how to define nested loops. So far all element-wise ops have had a check if numberOfLoops > 0 then emit krnl loop. If we call, say Sigmoid, on a scalar tensor, no krnl.iterate is generated.
Only issue is when we have unranked tensors, but so far all tensors come to krnl need to be ranked.

@tungld The error occurred when the loop is initialized with IndexExpr. Of course, we can create the krnl with the special check for scalar. But we did not do such check in many places. It would be better if we find a uniform way to handle scalar and tensor. Will tensor and tensor<1xi32> be both translated into memref<1xi32>?

It would be better if we find a uniform way to handle scalar and tensor. Will tensor and tensor<1xi32> be both translated into memref<1xi32>?

Is it a good idea to import all ONNX scalars as tensor<1xtype> instead of tensor so that we don't have scalar tensors? Then there is no problem with loops or IndexExpr. Loops with upper bound 1 will be eliminated eventually I think.

Is it a good idea to import all ONNX scalars as tensor<1xtype> instead of tensor so that we don't have scalar tensors?

I never really understood the difference between  tensor<1xtype> and  tensor<type>, and the even stranger definition of tensor<0xtype>.
If we do that, let's make sure we have a sufficient number of tests to prevent regressions...

Is it a good idea to import all ONNX scalars as tensor<1xtype> instead of tensor<type> so that we don't have scalar tensors? Then there is no problem with loops or IndexExpr. Loops with upper bound 1 will be eliminated eventually I think.
No. Actually it's my first thought and I implemented it. It cause errors in the model. As I mentioned previously:
Tense with scalar type is needed because some ops, for example, Clip, require scalar input. Moreover, some shape related ops, such as Squeeze/Unsqueeze, behave differently between tensor and tensor<1xi64>.

Regarding tensor<0xtype>, it reminds me of this discussion thread: https://llvm.discourse.group/t/what-is-the-semantics-of-memref-0xf32-and-tensor-0xf32/3557


docs(variance): Correct typos in comments

Which issue does this PR close?

Closes #.
Rationale for this change
Typo
What changes are included in this PR?
Correct typos in comments
Are these changes tested?
Unit tests
Are there any user-facing changes?
NO

This PR appears to have a conflict that needs to be addressed prior to merge (perhaps https://github.com/apache/datafusion/pull/10836)

Resolved the conflict. Thanks for the review

Thanks again @pingsutw


Compile instructions incorrect

I'm trying to compile but the instructions don't seem to work, I'm hoping this is user error on my part:

The jb install command  below is incorrect as the repo has moved:
jb install github.com/coreos/prometheus-operator/contrib/kube-prometheus/jsonnet/kube-prometheus

I was able to install the dependencies by pointing at the local directory:
jb install github.com/coreos/kube-prometheus/jsonnet/kube-prometheus

When running build.sh it fails to resolve the imports as kube-prometheus/kube-prometheus.libsonnet specifies the following that don't exist:
grafana/grafana.libsonnet
prometheus-operator/prometheus-operator.libsonnet
kubernetes-mixin/mixin.libsonnet

1 & 2 have been fixed by #73.
For 3 you probably need to run jb install in the root of the repo once.

Yep that's fixed it, thanks @brancz


Can't enable it (different error even after fix)

Describe the bug
Getting an error when trying to enable it:
ERROR: Transient parent has another exclusive child.
   at: (scene/main/window.cpp:712)

To Reproduce
Steps to reproduce the behavior:

Follow install instructions
Try to enable it
See error

Expected behavior
No error
Desktop (please complete the following information):

OS: Windows 10 64bit
Godot Engine v4.0.beta17.mono.official.c40020513

Additional context
Using @Sythelux 's #23

Thank you. Apparently they threw over even more C# APIs with beta17, which I all have to fix. I'm considering not fixing API changes atm as there are a lot of changes between each version and the one from beta17 reverts changes from beta5, which is quite bothersome, that they changed things and then change them back.
If you want you can try beta16 with my hotfix if not then please be patient I might fix them with RC1 at latest. (or someone else will fix it)

If possible please try pull #26 and see if that is working.

Obsolete as Godot 4.1 is out and everything changed. Please try the most recent Version and reopen the Ticket. I will also update the Wiki and add an FAQ for this rather typical issue.


not working

I can't get a completion from this plugin.

What I actually want to know is how to 'Reads your configured scopes from [commitlint]

Can you run node --eval 'eval("var obj ="+process.argv[1]);console.log(JSON.stringify(obj?.rules?.["type-enum"]?.[2]));' "$(npx commitlint --print-config --no-color | tr '\n' ' ')" 2>/dev/null on the root of your project?

What I actually want to know is how to 'Reads your configured scopes from [commitlint]

Can you run node --eval 'eval("var obj ="+process.argv[1]);console.log(JSON.stringify(obj?.rules?.["type-enum"]?.[2]));' "$(npx commitlint --print-config --no-color | tr '\n' ' ')" 2>/dev/null on the root of your project?

Ok, I will try tomorrow.

What I actually want to know is how to 'Reads your configured scopes from [commitlint]

Can you run node --eval 'eval("var obj ="+process.argv[1]);console.log(JSON.stringify(obj?.rules?.["type-enum"]?.[2]));' "$(npx commitlint --print-config --no-color | tr '\n' ' ')" 2>/dev/null on the root of your project?

It returns 'undefined'. Then how should I fix it please?

You should install (and configure) @commitlint/cli and a configuration like @commitlint/config-conventional

You should install (and configure) @commitlint/cli and a configuration like @commitlint/config-conventional

But I have installed them before I run the command you provided to me.

After running this echo '123' | commitlint, I got:
⧗   input: 123
✖   subject may not be empty [subject-empty]
✖   type may not be empty [type-empty]
✖   found 2 problems, 0 warnings

Well, I'm running out of ideas. Can you add this to your cmp config?:
...
  mapping = cmp.mapping.preset.insert({
    ['<C-Space>'] = cmp.mapping.complete({
      config = {
        sources = {
          { name = 'conventionalcommits' },
        },
      },
    }),
  }),
...

Then, enter neovim (with nvim -c 'set ft=gitcommit', for example) in a gitcommit filetype buffer, enter insert mode on the first row and column (0,0) of the buffer and press <Ctrl-Space> (with your keyboard, something like this should appear:

https://user-images.githubusercontent.com/9190258/233401784-87180c6d-8337-40d2-97c6-0d98dcf6b48e.mp4

Well, I'm running out of ideas. Can you add this to your cmp config?:
...
  mapping = cmp.mapping.preset.insert({
    ['<C-Space>'] = cmp.mapping.complete({
      config = {
        sources = {
          { name = 'conventionalcommits' },
        },
      },
    }),
  }),
...

Then, enter neovim (with nvim -c 'set ft=gitcommit', for example) in a gitcommit filetype buffer, enter insert mode on the first row and column (0,0) of the buffer and press <Ctrl-Space> (with your keyboard, something like this should appear:

2023-04-20.09-38-23.mp4

Thanks! It works! But when I run git commit, it breaks again.

I found that after setting the filetype it works. What is exactly the problem??

The completion only activates on gitcommit buffers, so is a requisite. git commit should setup your $EDITOR correctly, can't help you with that.

Ok, still thanks a lot for your help!