Brian Hulette created BEAM-12490:
------------------------------------
Summary: Python PreCommit flaking in
SdkWorkerTest.test_harness_monitoring_infos_and_metadata
Key: BEAM-12490
URL: https://issues.apache.org/jira/browse/BEAM-12490
Project: Beam
Issue Type: Improvement
Components: sdk-py-core
Reporter: Brian Hulette
Assignee: Brian Hulette
SdkWorkerTest.test_harness_monitoring_infos_and_metadata has been very flaky
over the last few days.
Based on [test
history|https://ci-beam.apache.org/job/beam_PreCommit_Python_Cron/lastCompletedBuild/testReport/junit/apache_beam.runners.worker.sdk_worker_test/SdkWorkerTest/history/]
it looks like the first flake was in [cron build
#4303|https://ci-beam.apache.org/job/beam_PreCommit_Python_Cron/4303/].
{code}
self = <apache_beam.runners.worker.sdk_worker_test.SdkWorkerTest
testMethod=test_harness_monitoring_infos_and_metadata>
def test_harness_monitoring_infos_and_metadata(self):
# Clear the process wide metric container.
MetricsEnvironment.process_wide_container().reset()
# Create a process_wide metric.
urn = 'my.custom.urn'
labels = {'key': 'value'}
InternalMetrics.counter(urn=urn, labels=labels, process_wide=True).inc(10)
harness_monitoring_infos_request = beam_fn_api_pb2.InstructionRequest(
instruction_id="monitoring_infos",
harness_monitoring_infos=beam_fn_api_pb2.HarnessMonitoringInfosRequest(
))
> responses = self.get_responses([harness_monitoring_infos_request])
apache_beam/runners/worker/sdk_worker_test.py:236:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
apache_beam/runners/worker/sdk_worker_test.py:220: in get_responses
harness.run()
apache_beam/runners/worker/sdk_worker.py:257: in run
work_request)
apache_beam/runners/worker/sdk_worker.py:330: in
_request_harness_monitoring_infos
).to_runner_api_monitoring_infos(None).values()
apache_beam/metrics/execution.py:312: in to_runner_api_monitoring_infos
cell in items
apache_beam/metrics/execution.py:312: in <listcomp>
cell in items
apache_beam/metrics/cells.py:76: in to_runner_api_monitoring_info
mi = self.to_runner_api_monitoring_info_impl(name, transform_id)
apache_beam/metrics/cells.py:158: in to_runner_api_monitoring_info_impl
name.urn, self.get_cumulative(), labels=name.labels)
apache_beam/metrics/monitoring_infos.py:187: in int64_counter
return create_monitoring_info(urn, SUM_INT64_TYPE, metric, labels)
apache_beam/metrics/monitoring_infos.py:286: in create_monitoring_info
urn=urn, type=type_urn, labels=labels or dict(), payload=payload)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
args = [{'GCS_BUCKET': 'gcsio-test', 'GCS_PROJECT_ID': 1, 'METHOD':
'Objects.insert', 'RESOURCE': '//storage.googleapis.com/buckets/gcsio-test',
...}]
kwds = {}
self = {'GCS_BUCKET': 'gcsio-test', 'METHOD': 'Objects.insert', 'RESOURCE':
'//storage.googleapis.com/buckets/gcsio-test', 'GCS_PROJECT_ID': '', 'SERVICE':
'Storage'}
other = {'GCS_BUCKET': 'gcsio-test', 'GCS_PROJECT_ID': 1, 'METHOD':
'Objects.insert', 'RESOURCE': '//storage.googleapis.com/buckets/gcsio-test',
...}
key = 'GCS_PROJECT_ID'
def update(*args, **kwds):
''' D.update([E, ]**F) -> None. Update D from mapping/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] =
E[k]
If E present and lacks .keys() method, does: for (k, v) in E:
D[k] = v
In either case, this is followed by: for k, v in F.items(): D[k] = v
'''
if not args:
raise TypeError("descriptor 'update' of 'MutableMapping' object "
"needs an argument")
self, *args = args
if len(args) > 1:
raise TypeError('update expected at most 1 arguments, got %d' %
len(args))
if args:
other = args[0]
if isinstance(other, Mapping):
for key in other:
> self[key] = other[key]
E TypeError: 1 has type int, but expected one of: bytes,
unicode
/usr/lib/python3.7/_collections_abc.py:841: TypeError
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)