Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def new_start_response(status, headers, exc_info=None):
"""Modified start response with additional headers."""
if 'stan_scope' in env:
scope = env['stan_scope']
tracer.inject(scope.span.context, ot.Format.HTTP_HEADERS, headers)
headers.append(('Server-Timing', "intid;desc=%s" % scope.span.context.trace_id))
res = start_response(status, headers, exc_info)
sc = status.split(' ')[0]
if 500 <= int(sc) <= 511:
scope.span.mark_as_errored()
scope.span.set_tag(tags.HTTP_STATUS_CODE, sc)
scope.close()
return res
else:
return start_response(status, headers, exc_info)
def new_start_response(status, headers, exc_info=None):
"""Modified start response with additional headers."""
tracer.inject(self.scope.span.context, ot.Format.HTTP_HEADERS, headers)
headers.append(('Server-Timing', "intid;desc=%s" % self.scope.span.context.trace_id))
res = start_response(status, headers, exc_info)
sc = status.split(' ')[0]
if 500 <= int(sc) <= 511:
self.scope.span.mark_as_errored()
self.scope.span.set_tag(tags.HTTP_STATUS_CODE, sc)
self.scope.close()
return res
def after_request_with_instana(response):
scope = None
try:
# If we're not tracing, just return
if not hasattr(flask.g, 'scope'):
return response
scope = flask.g.scope
if scope is not None:
span = scope.span
if 500 <= response.status_code <= 511:
span.mark_as_errored()
span.set_tag(ext.HTTP_STATUS_CODE, int(response.status_code))
tracer.inject(scope.span.context, opentracing.Format.HTTP_HEADERS, response.headers)
response.headers.add('Server-Timing', "intid;desc=%s" % scope.span.context.trace_id)
except:
logger.debug("Flask after_request", exc_info=True)
finally:
if scope is not None:
scope.close()
flask.g.scope = None
return response
parent_span = tracer.active_span
if parent_span is not None:
body = kwargs['body']
headers = kwargs['headers']
task_name = kwargs['sender']
task = registry.tasks.get(task_name)
task_id = get_task_id(headers, body)
scope = tracer.start_active_span("celery-client", child_of=parent_span)
scope.span.set_tag("task", task_name)
scope.span.set_tag("task_id", task_id)
add_broker_tags(scope.span, task.app.conf['broker_url'])
# Context propagation
context_headers = {}
tracer.inject(scope.span.context, opentracing.Format.HTTP_HEADERS, context_headers)
# Fix for broken header propagation
# https://github.com/celery/celery/issues/4875
task_headers = kwargs.get('headers') or {}
task_headers.setdefault('headers', {})
task_headers['headers'].update(context_headers)
kwargs['headers'] = task_headers
# Store the scope on the task to eventually close it out on the "after" signal
task_catalog_push(task, task_id, scope, False)
except:
logger.debug("before_task_publish: ", exc_info=True)
def unary_unary_with_call_with_instana(wrapped, instance, argv, kwargs):
parent_span = tracer.active_span
# If we're not tracing, just return
if parent_span is None:
return wrapped(*argv, **kwargs)
with tracer.start_active_span("rpc-client", child_of=parent_span) as scope:
try:
if "metadata" not in kwargs:
kwargs["metadata"] = []
kwargs["metadata"] = tracer.inject(scope.span.context, opentracing.Format.BINARY, kwargs['metadata'])
collect_tags(scope.span, instance, argv, kwargs)
scope.span.set_tag('rpc.call_type', 'unary')
rv = wrapped(*argv, **kwargs)
except Exception as e:
scope.span.log_exception(e)
raise
else:
return rv
def process_response(self, request, response):
try:
if request.iscope is not None:
if 500 <= response.status_code <= 511:
request.iscope.span.assure_errored()
request.iscope.span.set_tag(ext.HTTP_STATUS_CODE, response.status_code)
tracer.inject(request.iscope.span.context, ot.Format.HTTP_HEADERS, response)
response['Server-Timing'] = "intid;desc=%s" % request.iscope.span.context.trace_id
except Exception:
logger.debug("Instana middleware @ process_response", exc_info=True)
finally:
if request.iscope is not None:
request.iscope.close()
request.iscope = None
return response
# If we're not tracing, just return
if parent_span is None:
return wrapped(*args, **kwargs)
with tracer.start_active_span("urllib3", child_of=parent_span) as scope:
try:
kvs = collect(instance, args, kwargs)
if 'url' in kvs:
scope.span.set_tag(ext.HTTP_URL, kvs['url'])
if 'query' in kvs:
scope.span.set_tag("http.params", kvs['query'])
if 'method' in kvs:
scope.span.set_tag(ext.HTTP_METHOD, kvs['method'])
if 'headers' in kwargs:
tracer.inject(scope.span.context, opentracing.Format.HTTP_HEADERS, kwargs['headers'])
response = wrapped(*args, **kwargs)
collect_response(scope, response)
return response
except Exception as e:
scope.span.mark_as_errored({'message': e})
raise
def unary_unary_future_with_instana(wrapped, instance, argv, kwargs):
parent_span = tracer.active_span
# If we're not tracing, just return
if parent_span is None:
return wrapped(*argv, **kwargs)
with tracer.start_active_span("rpc-client", child_of=parent_span) as scope:
try:
if "metadata" not in kwargs:
kwargs["metadata"] = []
kwargs["metadata"] = tracer.inject(scope.span.context, opentracing.Format.BINARY, kwargs['metadata'])
collect_tags(scope.span, instance, argv, kwargs)
scope.span.set_tag('rpc.call_type', 'unary')
rv = wrapped(*argv, **kwargs)
except Exception as e:
scope.span.log_exception(e)
raise
else:
return rv
def unary_unary_call_with_instana(wrapped, instance, argv, kwargs):
parent_span = tracer.active_span
# If we're not tracing, just return
if parent_span is None:
return wrapped(*argv, **kwargs)
with tracer.start_active_span("rpc-client", child_of=parent_span) as scope:
try:
if not "metadata" in kwargs:
kwargs["metadata"] = []
kwargs["metadata"] = tracer.inject(scope.span.context, opentracing.Format.BINARY, kwargs['metadata'])
collect_tags(scope.span, instance, argv, kwargs)
scope.span.set_tag('rpc.call_type', 'unary')
rv = wrapped(*argv, **kwargs)
except Exception as e:
scope.span.log_exception(e)
raise
else:
return rv