Skip to content

Commit 3236b67

Browse files
authored
Merge branch 'master' into master
2 parents e43539b + 19e907d commit 3236b67

12 files changed

Lines changed: 82 additions & 93 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ gen:
3232
lint: clean
3333
flake8 --version || python3 -m pip install flake8
3434
flake8 . --count --select=E9,F63,F7,F82 --show-source
35-
flake8 . --count --max-complexity=12 --max-line-length=120
35+
flake8 . --count --max-complexity=13 --max-line-length=120
3636

3737
license: clean
3838
python3 tools/check-license-header.py skywalking tests tools

skywalking/plugins/sw_flask.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
def install():
2727
from flask import Flask
2828
_full_dispatch_request = Flask.full_dispatch_request
29-
3029
_handle_user_exception = Flask.handle_user_exception
30+
_handle_exception = Flask.handle_exception
3131

3232
def params_tostring(params):
3333
return "\n".join([k + '=[' + ",".join(params.getlist(k)) + ']' for k, _ in params.items()])
@@ -66,5 +66,14 @@ def _sw_handle_user_exception(this: Flask, e):
6666

6767
return _handle_user_exception(this, e)
6868

69+
def _sw_handle_exception(this: Flask, e):
70+
if e is not None:
71+
entry_span = get_context().active_span()
72+
if entry_span is not None and type(entry_span) is not NoopSpan:
73+
entry_span.raised()
74+
75+
return _handle_exception(this, e)
76+
6977
Flask.full_dispatch_request = _sw_full_dispatch_request
7078
Flask.handle_user_exception = _sw_handle_user_exception
79+
Flask.handle_exception = _sw_handle_exception

skywalking/plugins/sw_kafka.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,15 @@ def _sw_send(this, topic, value=None, key=None, headers=None, partition=None, ti
7272

7373
peer = ";".join(this.config["bootstrap_servers"])
7474
context = get_context()
75-
carrier = Carrier()
76-
with context.new_exit_span(op="Kafka/" + topic + "/Producer" or "/", peer=peer, carrier=carrier) as span:
75+
with context.new_exit_span(op="Kafka/" + topic + "/Producer" or "/", peer=peer) as span:
76+
carrier = span.inject()
7777
span.layer = Layer.MQ
7878
span.component = Component.KafkaProducer
7979

8080
if headers is None:
8181
headers = []
82-
for item in carrier:
83-
headers.append((item.key, item.val.encode("utf-8")))
84-
else:
85-
for item in carrier:
86-
headers.append((item.key, item.val.encode("utf-8")))
82+
for item in carrier:
83+
headers.append((item.key, item.val.encode("utf-8")))
8784

8885
res = _send(this, topic, value=value, key=key, headers=headers, partition=partition,
8986
timestamp_ms=timestamp_ms)

skywalking/plugins/sw_pymongo.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
from skywalking import Layer, Component, config
1919
from skywalking.trace import tags
20-
from skywalking.trace.carrier import Carrier
2120
from skywalking.trace.context import get_context
2221
from skywalking.trace.tags import Tag
2322

@@ -56,11 +55,10 @@ def _sw_command(this: SocketInfo, dbname, spec, *args, **kwargs):
5655
address = this.sock.getpeername()
5756
peer = "%s:%s" % address
5857
context = get_context()
59-
carrier = Carrier()
6058

6159
operation = list(spec.keys())[0]
6260
sw_op = operation.capitalize() + "Operation"
63-
with context.new_exit_span(op="MongoDB/" + sw_op, peer=peer, carrier=carrier) as span:
61+
with context.new_exit_span(op="MongoDB/" + sw_op, peer=peer) as span:
6462
result = _command(this, dbname, spec, *args, **kwargs)
6563

6664
span.layer = Layer.Database
@@ -108,10 +106,9 @@ def _sw_execute(this: _Bulk, *args, **kwargs):
108106
address = this.collection.database.client.address
109107
peer = "%s:%s" % address
110108
context = get_context()
111-
carrier = Carrier()
112109

113110
sw_op = "MixedBulkWriteOperation"
114-
with context.new_exit_span(op="MongoDB/"+sw_op, peer=peer, carrier=carrier) as span:
111+
with context.new_exit_span(op="MongoDB/"+sw_op, peer=peer) as span:
115112
span.layer = Layer.Database
116113
span.component = Component.MongoDB
117114

@@ -144,10 +141,9 @@ def _sw_send_message(this: Cursor, operation):
144141
peer = "%s:%s" % address
145142

146143
context = get_context()
147-
carrier = Carrier()
148144
op = "FindOperation"
149145

150-
with context.new_exit_span(op="MongoDB/"+op, peer=peer, carrier=carrier) as span:
146+
with context.new_exit_span(op="MongoDB/"+op, peer=peer) as span:
151147
span.layer = Layer.Database
152148
span.component = Component.MongoDB
153149

skywalking/plugins/sw_pymysql.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
from skywalking import Layer, Component, config
1919
from skywalking.trace import tags
20-
from skywalking.trace.carrier import Carrier
2120
from skywalking.trace.context import get_context
2221
from skywalking.trace.tags import Tag
2322

@@ -31,8 +30,7 @@ def _sw_execute(this: Cursor, query, args=None):
3130
peer = "%s:%s" % (this.connection.host, this.connection.port)
3231

3332
context = get_context()
34-
carrier = Carrier()
35-
with context.new_exit_span(op="Mysql/PyMsql/execute", peer=peer, carrier=carrier) as span:
33+
with context.new_exit_span(op="Mysql/PyMsql/execute", peer=peer) as span:
3634
span.layer = Layer.Database
3735
span.component = Component.PyMysql
3836
res = _execute(this, query, args)

skywalking/plugins/sw_rabbitmq.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,22 +39,18 @@ def _sw_basic_publish(this, exchange,
3939
mandatory=False):
4040
peer = '%s:%s' % (this.connection.params.host, this.connection.params.port)
4141
context = get_context()
42-
carrier = Carrier()
4342
import pika
4443
with context.new_exit_span(op="RabbitMQ/Topic/" + exchange + "/Queue/" + routing_key + "/Producer" or "/",
45-
peer=peer, carrier=carrier) as span:
44+
peer=peer) as span:
45+
carrier = span.inject()
4646
span.layer = Layer.MQ
4747
span.component = Component.RabbitmqProducer
4848
properties = pika.BasicProperties() if properties is None else properties
4949

5050
if properties.headers is None:
51-
headers = {}
52-
for item in carrier:
53-
headers[item.key] = item.val
54-
properties.headers = headers
55-
else:
56-
for item in carrier:
57-
properties.headers[item.key] = item.val
51+
properties.headers = {}
52+
for item in carrier:
53+
properties.headers[item.key] = item.val
5854

5955
res = _basic_publish(this, exchange,
6056
routing_key,

skywalking/plugins/sw_requests.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
from skywalking import Layer, Component
1919
from skywalking.trace import tags
20-
from skywalking.trace.carrier import Carrier
2120
from skywalking.trace.context import get_context
2221
from skywalking.trace.tags import Tag
2322
from skywalking import config
@@ -44,18 +43,15 @@ def _sw_request(this: Session, method, url,
4443
hooks, stream, verify, cert, json)
4544

4645
context = get_context()
47-
carrier = Carrier()
48-
with context.new_exit_span(op=url_param.path or "/", peer=url_param.netloc, carrier=carrier) as span:
46+
with context.new_exit_span(op=url_param.path or "/", peer=url_param.netloc) as span:
47+
carrier = span.inject()
4948
span.layer = Layer.Http
5049
span.component = Component.Requests
5150

5251
if headers is None:
5352
headers = {}
54-
for item in carrier:
55-
headers[item.key] = item.val
56-
else:
57-
for item in carrier:
58-
headers[item.key] = item.val
53+
for item in carrier:
54+
headers[item.key] = item.val
5955

6056
span.tag(Tag(key=tags.HttpMethod, val=method.upper()))
6157
span.tag(Tag(key=tags.HttpUrl, val=url))

skywalking/plugins/sw_urllib3.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
from skywalking import Layer, Component
1919
from skywalking.trace import tags
20-
from skywalking.trace.carrier import Carrier
2120
from skywalking.trace.context import get_context
2221
from skywalking.trace.tags import Tag
2322

@@ -31,19 +30,16 @@ def _sw_request(this: RequestMethods, method, url, fields=None, headers=None, **
3130

3231
from urllib.parse import urlparse
3332
url_param = urlparse(url)
34-
carrier = Carrier()
3533
context = get_context()
36-
with context.new_exit_span(op=url_param.path or "/", peer=url_param.netloc, carrier=carrier) as span:
34+
with context.new_exit_span(op=url_param.path or "/", peer=url_param.netloc) as span:
35+
carrier = span.inject()
3736
span.layer = Layer.Http
3837
span.component = Component.Urllib3
3938

4039
if headers is None:
4140
headers = {}
42-
for item in carrier:
43-
headers[item.key] = item.val
44-
else:
45-
for item in carrier:
46-
headers[item.key] = item.val
41+
for item in carrier:
42+
headers[item.key] = item.val
4743

4844
span.tag(Tag(key=tags.HttpMethod, val=method.upper()))
4945
span.tag(Tag(key=tags.HttpUrl, val=url))

skywalking/plugins/sw_urllib_request.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
from skywalking import Layer, Component
2121
from skywalking.trace import tags
22-
from skywalking.trace.carrier import Carrier
2322
from skywalking.trace.context import get_context
2423
from skywalking.trace.tags import Tag
2524

@@ -36,9 +35,9 @@ def _sw_open(this: OpenerDirector, fullurl, data=None, timeout=socket._GLOBAL_DE
3635
fullurl = Request(fullurl, data)
3736

3837
context = get_context()
39-
carrier = Carrier()
4038
url = fullurl.selector.split("?")[0] if fullurl.selector else '/'
41-
with context.new_exit_span(op=url, peer=fullurl.host, carrier=carrier) as span:
39+
with context.new_exit_span(op=url, peer=fullurl.host) as span:
40+
carrier = span.inject()
4241
span.layer = Layer.Http
4342
span.component = Component.General
4443
code = None

skywalking/trace/carrier.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,22 @@ def val(self, val: str):
4444

4545

4646
class Carrier(CarrierItem):
47-
def __init__(self):
47+
def __init__(self, trace_id: str = '', segment_id: str = '', span_id: str = '', service: str = '',
48+
service_instance: str = '', endpoint: str = '', client_address: str = '',
49+
correlation: dict = None): # pyre-ignore
4850
super(Carrier, self).__init__(key='sw8')
49-
self.trace_id = '' # type: str
50-
self.segment_id = '' # type: str
51-
self.span_id = '' # type: str
52-
self.service = '' # type: str
53-
self.service_instance = '' # type: str
54-
self.endpoint = '' # type: str
55-
self.client_address = '' # type: str
51+
self.trace_id = trace_id # type: str
52+
self.segment_id = segment_id # type: str
53+
self.span_id = span_id # type: str
54+
self.service = service # type: str
55+
self.service_instance = service_instance # type: str
56+
self.endpoint = endpoint # type: str
57+
self.client_address = client_address # type: str
5658
self.correlation_carrier = SW8CorrelationCarrier()
5759
self.items = [self.correlation_carrier, self] # type: List[CarrierItem]
5860
self.__iter_index = 0 # type: int
61+
if correlation is not None:
62+
self.correlation_carrier.correlation = correlation
5963

6064
@property
6165
def val(self) -> str:

0 commit comments

Comments
 (0)