{"action":"created","comment":{"url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/comments/33392400","id":33392400,"diff_hunk":"@@ -0,0 +1,57 @@\n+/*\n+ * Copyright 2012-2015 the original author or authors.\n+ *\n+ * Licensed under the Apache License, Version 2.0 (the \"License\");\n+ * you may not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *      http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+package org.springframework.cloud.sleuth.instrument.web.client;\n+\n+import static org.springframework.cloud.sleuth.Trace.SPAN_ID_NAME;\n+import static org.springframework.cloud.sleuth.Trace.TRACE_ID_NAME;\n+import static org.springframework.cloud.sleuth.TraceContextHolder.getCurrentSpan;\n+import static org.springframework.cloud.sleuth.TraceContextHolder.isTracing;\n+\n+import java.io.IOException;\n+\n+import org.springframework.cloud.sleuth.Trace;\n+import org.springframework.http.HttpRequest;\n+import org.springframework.http.client.ClientHttpRequestExecution;\n+import org.springframework.http.client.ClientHttpRequestInterceptor;\n+import org.springframework.http.client.ClientHttpResponse;\n+\n+/**\n+ * Interceptor that verifies whether the trance and span id has been set on the\n+ * request and sets them if one or both of them are missing.\n+ *\n+ * @see org.springframework.web.client.RestTemplate\n+ * @see Trace\n+ *\n+ * @author Marcin Grzejszczak, 4financeIT\n+ * @author Spencer Gibb\n+ */\n+public class TraceRestTemplateInterceptor implements ClientHttpRequestInterceptor {","path":"spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/instrument/web/client/TraceRestTemplateInterceptor.java","position":41,"original_position":41,"commit_id":"749e492bd5a55de1f14c67ad16fea018d33767e5","original_commit_id":"17f27a4cceb5923aa97473e10f60a52a786755fb","user":{"login":"spencergibb","id":594085,"avatar_url":"https://avatars.githubusercontent.com/u/594085?v=3","gravatar_id":"","url":"https://api.github.com/users/spencergibb","html_url":"https://github.com/spencergibb","followers_url":"https://api.github.com/users/spencergibb/followers","following_url":"https://api.github.com/users/spencergibb/following{/other_user}","gists_url":"https://api.github.com/users/spencergibb/gists{/gist_id}","starred_url":"https://api.github.com/users/spencergibb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spencergibb/subscriptions","organizations_url":"https://api.github.com/users/spencergibb/orgs","repos_url":"https://api.github.com/users/spencergibb/repos","events_url":"https://api.github.com/users/spencergibb/events{/privacy}","received_events_url":"https://api.github.com/users/spencergibb/received_events","type":"User","site_admin":false},"body":":+1: ","created_at":"2015-06-26T20:24:59Z","updated_at":"2015-06-26T20:24:59Z","html_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth/pull/4#discussion_r33392400","pull_request_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/comments/33392400"},"html":{"href":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth/pull/4#discussion_r33392400"},"pull_request":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4","id":38683609,"html_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth/pull/4","diff_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth/pull/4.diff","patch_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth/pull/4.patch","issue_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/4","number":4,"state":"open","locked":false,"title":"Tracing abstraction","user":{"login":"spencergibb","id":594085,"avatar_url":"https://avatars.githubusercontent.com/u/594085?v=3","gravatar_id":"","url":"https://api.github.com/users/spencergibb","html_url":"https://github.com/spencergibb","followers_url":"https://api.github.com/users/spencergibb/followers","following_url":"https://api.github.com/users/spencergibb/following{/other_user}","gists_url":"https://api.github.com/users/spencergibb/gists{/gist_id}","starred_url":"https://api.github.com/users/spencergibb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spencergibb/subscriptions","organizations_url":"https://api.github.com/users/spencergibb/orgs","repos_url":"https://api.github.com/users/spencergibb/repos","events_url":"https://api.github.com/users/spencergibb/events{/privacy}","received_events_url":"https://api.github.com/users/spencergibb/received_events","type":"User","site_admin":false},"body":"The abstraction is based heavily off of http://htrace.incubator.apache.org.  \r\n\r\nThe terminology is based on google [dapper](http://research.google.com/pubs/pub36356.html).\r\n\r\n* __Trace__: The overarching unit of sleuth.  A tree of spans.  Has an id.\r\n* __Span__: Nodes in a trace tree.  Edges represent parent/child relationship.  Spans without a parent are root spans.  Has a name, id, trace id, parent span ids, start and end times.\r\n* __Annotations__: Data associated with a span\r\n* __Sampler__: Determines when to trace\r\n\r\n### API\r\n\r\nTrace is in interface with DefaultTrace is an implementation.  It's job is to start Spans appropriately.\r\n\r\n* `TraceScope startSpan(String name)`\r\n* `TraceScope startSpan(String name, Span parent)`\r\n* `TraceScope startSpan(String name, Sampler<T> s)`\r\n\r\nTraceScope is a class that defines behavior for the life of a Span.\r\n\r\n* `public TraceScope(ApplicationEventPublisher publisher, Span span, Span savedSpan)`\r\n* `public Span detach()`\r\n* `public void close()`\r\n\r\nYou'll notice the `ApplicationEventPublisher` in the constructor.  Currently two spring application events are published: SpanStartedEvent and SpanStoppedEvent, which are self explanatory.  If have implemented listeners that for setting the trace id and span id via Slf4j MDC so those values can be shown in logs.  This replicates the 4financeit correlationid that was printed in the logs.  This is also where publishing spans to various pipelines can be implemented: Zipkin, cloudfoundry, jdbc etc...  Because it is event driven, multiple entities can consume spans.\r\n\r\nSampler interface.  Allows customization of when to trace.  A default Sampler is an argument to `DefaultTrace`.\r\n\r\n### Sampler\r\n\r\n* `boolean next(T info)`\r\n\r\n### Instrumentation\r\n\r\nInstrumenting code is the next important step in tracing.  There is instrumentation for hystrix, spring scheduling, spring mvc controllers, servlet filter, `RestTemplate` and Zuul.  There are two major ways of instrumenting code, via AOP and via lifecycle hooks (spring mvc, RestTemplate).\r\n\r\n@mstine @dsyer @joshlong\r\n\r\n@marcingrzejszczak I'd like you to review and ask any questions you might have about how this is different from the implementation you committed.  I believe everything you had is still there.  What you called `Correlation-Id` is now analogous to `Trace-Id`, you just wouldn't care for the `Span-Id`'s if you didn't want to.  It's pluggable now. ","created_at":"2015-06-26T19:55:42Z","updated_at":"2015-06-26T20:24:59Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ee810ff3447c878c1b41cee5b5d5af6ba894336f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4/commits","review_comments_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4/comments","review_comment_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/4/comments","statuses_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/statuses/749e492bd5a55de1f14c67ad16fea018d33767e5","head":{"label":"spring-cloud-incubator:correlation-abstraction2","ref":"correlation-abstraction2","sha":"749e492bd5a55de1f14c67ad16fea018d33767e5","user":{"login":"spring-cloud-incubator","id":12071230,"avatar_url":"https://avatars.githubusercontent.com/u/12071230?v=3","gravatar_id":"","url":"https://api.github.com/users/spring-cloud-incubator","html_url":"https://github.com/spring-cloud-incubator","followers_url":"https://api.github.com/users/spring-cloud-incubator/followers","following_url":"https://api.github.com/users/spring-cloud-incubator/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud-incubator/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud-incubator/orgs","repos_url":"https://api.github.com/users/spring-cloud-incubator/repos","events_url":"https://api.github.com/users/spring-cloud-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud-incubator/received_events","type":"Organization","site_admin":false},"repo":{"id":31788540,"name":"spring-cloud-sleuth","full_name":"spring-cloud-incubator/spring-cloud-sleuth","owner":{"login":"spring-cloud-incubator","id":12071230,"avatar_url":"https://avatars.githubusercontent.com/u/12071230?v=3","gravatar_id":"","url":"https://api.github.com/users/spring-cloud-incubator","html_url":"https://github.com/spring-cloud-incubator","followers_url":"https://api.github.com/users/spring-cloud-incubator/followers","following_url":"https://api.github.com/users/spring-cloud-incubator/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud-incubator/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud-incubator/orgs","repos_url":"https://api.github.com/users/spring-cloud-incubator/repos","events_url":"https://api.github.com/users/spring-cloud-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud-incubator/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth","description":"","fork":false,"url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth","forks_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/forks","keys_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/teams","hooks_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/hooks","issue_events_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/events{/number}","events_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/events","assignees_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/assignees{/user}","branches_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/branches{/branch}","tags_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/tags","blobs_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/refs{/sha}","trees_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/statuses/{sha}","languages_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/languages","stargazers_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/stargazers","contributors_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/contributors","subscribers_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/subscribers","subscription_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/subscription","commits_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/commits{/sha}","git_commits_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/commits{/sha}","comments_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/comments{/number}","issue_comment_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/comments{/number}","contents_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/contents/{+path}","compare_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/merges","archive_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/downloads","issues_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues{/number}","pulls_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls{/number}","milestones_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/milestones{/number}","notifications_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/labels{/name}","releases_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/releases{/id}","created_at":"2015-03-06T20:51:47Z","updated_at":"2015-06-25T14:54:26Z","pushed_at":"2015-06-26T20:24:12Z","git_url":"git://github.com/spring-cloud-incubator/spring-cloud-sleuth.git","ssh_url":"git@github.com:spring-cloud-incubator/spring-cloud-sleuth.git","clone_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth.git","svn_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth","homepage":null,"size":275,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":2,"forks":4,"open_issues":2,"watchers":6,"default_branch":"master"}},"base":{"label":"spring-cloud-incubator:master","ref":"master","sha":"5b5003577f6ad4c48ac48bae529d9e19aa2f4076","user":{"login":"spring-cloud-incubator","id":12071230,"avatar_url":"https://avatars.githubusercontent.com/u/12071230?v=3","gravatar_id":"","url":"https://api.github.com/users/spring-cloud-incubator","html_url":"https://github.com/spring-cloud-incubator","followers_url":"https://api.github.com/users/spring-cloud-incubator/followers","following_url":"https://api.github.com/users/spring-cloud-incubator/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud-incubator/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud-incubator/orgs","repos_url":"https://api.github.com/users/spring-cloud-incubator/repos","events_url":"https://api.github.com/users/spring-cloud-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud-incubator/received_events","type":"Organization","site_admin":false},"repo":{"id":31788540,"name":"spring-cloud-sleuth","full_name":"spring-cloud-incubator/spring-cloud-sleuth","owner":{"login":"spring-cloud-incubator","id":12071230,"avatar_url":"https://avatars.githubusercontent.com/u/12071230?v=3","gravatar_id":"","url":"https://api.github.com/users/spring-cloud-incubator","html_url":"https://github.com/spring-cloud-incubator","followers_url":"https://api.github.com/users/spring-cloud-incubator/followers","following_url":"https://api.github.com/users/spring-cloud-incubator/following{/other_user}","gists_url":"https://api.github.com/users/spring-cloud-incubator/gists{/gist_id}","starred_url":"https://api.github.com/users/spring-cloud-incubator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spring-cloud-incubator/subscriptions","organizations_url":"https://api.github.com/users/spring-cloud-incubator/orgs","repos_url":"https://api.github.com/users/spring-cloud-incubator/repos","events_url":"https://api.github.com/users/spring-cloud-incubator/events{/privacy}","received_events_url":"https://api.github.com/users/spring-cloud-incubator/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth","description":"","fork":false,"url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth","forks_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/forks","keys_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/teams","hooks_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/hooks","issue_events_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/events{/number}","events_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/events","assignees_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/assignees{/user}","branches_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/branches{/branch}","tags_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/tags","blobs_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/refs{/sha}","trees_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/statuses/{sha}","languages_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/languages","stargazers_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/stargazers","contributors_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/contributors","subscribers_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/subscribers","subscription_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/subscription","commits_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/commits{/sha}","git_commits_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/git/commits{/sha}","comments_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/comments{/number}","issue_comment_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/comments{/number}","contents_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/contents/{+path}","compare_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/merges","archive_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/downloads","issues_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues{/number}","pulls_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls{/number}","milestones_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/milestones{/number}","notifications_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/labels{/name}","releases_url":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/releases{/id}","created_at":"2015-03-06T20:51:47Z","updated_at":"2015-06-25T14:54:26Z","pushed_at":"2015-06-26T20:24:12Z","git_url":"git://github.com/spring-cloud-incubator/spring-cloud-sleuth.git","ssh_url":"git@github.com:spring-cloud-incubator/spring-cloud-sleuth.git","clone_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth.git","svn_url":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth","homepage":null,"size":275,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":2,"forks":4,"open_issues":2,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4"},"html":{"href":"https://github.com/spring-cloud-incubator/spring-cloud-sleuth/pull/4"},"issue":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/4"},"comments":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/spring-cloud-incubator/spring-cloud-sleuth/statuses/749e492bd5a55de1f14c67ad16fea018d33767e5"}}}}