aws / aws/aws-xray-sdk-python

Upgrade coverage to 5.x

オープン
#196 コメント 11 件 リアクション 0 件 担当者 0 名 GitHub で見る
bug
主要言語
Python
スター
338
フォーク
147
PR マージ指標
30日以内にマージされた PR はありません

説明

Upgrading Coverage to 5.x breaks Travis CI and causes the following exception to occur at the end of the test:
```
No handlers could be found for logger "aws_xray_sdk.core.context"
Traceback (most recent call last):
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/bin/coverage", line 8, in
sys.exit(main())
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/cmdline.py", line 824, in main
status = CoverageScript().command_line(argv)
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/cmdline.py", line 555, in command_line
return self.do_run(options, args)
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/cmdline.py", line 710, in do_run
self.coverage.save()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/control.py", line 613, in save
data = self.get_data()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/control.py", line 667, in get_data
if self._collector and self._collector.flush_data():
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/collector.py", line 429, in flush_data
self.covdata.add_lines(self.mapped_file_dict(self.data))
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 436, in add_lines
self._choose_lines_or_arcs(lines=True)
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 493, in _choose_lines_or_arcs
with self._connect() as con:
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 298, in _connect
self._create_db()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 247, in _create_db
with db:
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 1008, in __enter__
self._connect()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 996, in _connect
self.execute("pragma journal_mode=off").close()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/.tox/py27/lib/python2.7/site-packages/coverage/sqldata.py", line 1025, in execute
return self.con.execute(sql, parameters)
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/ext/sqlite3/patch.py", line 32, in execute
return self.cursor().execute(*args, **kwargs)
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/models/subsegment.py", line 58, in __call__
meta_processor=None,
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/recorder.py", line 417, in record_subsegment
subsegment = self.begin_subsegment(name, namespace)
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/recorder.py", line 284, in begin_subsegment
segment = self.current_segment()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/recorder.py", line 267, in current_segment
entity = self.get_trace_entity()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/recorder.py", line 369, in get_trace_entity
return self.context.get_trace_entity()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/context.py", line 93, in get_trace_entity
return self.handle_context_missing()
File "/Users/cssaete/PycharmProjects/XRaySDK/aws-xray-sdk-python/aws_xray_sdk/core/context.py", line 118, in handle_context_missing
raise SegmentNotFoundException(MISSING_SEGMENT_MSG)
aws_xray_sdk.core.exceptions.exceptions.SegmentNotFoundException: cannot find the current segment/subsegment, please make sure you have a segment open
```

We will downgrade to 4.5.4 for now but will investigate what was introduced in 5.x that's causing the exception to occur.

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、Coverage 5.x で tox/Travis テストを再現し、aws_xray_sdk/ext/sqlite3/patch.py と、aws_xray_sdk/core/models/subsegment.py および aws_xray_sdk/core/recorder.py を通る traceback を調査します。Coverage 4.5.4 と動作を比較します。Coverage 5.x で SegmentNotFoundException が発生せずにテストが正常に完了すれば、作業は完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
ci-cd, testing
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
30/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。