payload: {"action":"created","comment":{"url":"https://api.github.com/repos/palantir/tracing-java/pulls/comments/308676104","pull_request_review_id":268333973,"id":308676104,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMwODY3NjEwNA==","diff_hunk":"@@ -22,4 +22,16 @@\n     String PARENT_SPAN_ID = \"X-B3-ParentSpanId\";\n     String SPAN_ID = \"X-B3-SpanId\";\n     String IS_SAMPLED = \"X-B3-Sampled\"; // Boolean (either “1” or “0”, can be absent)\n+\n+    /**\n+     * Conceptually, a trace is a stack of spans. In implementation, this is actually many stacks, in many services,","path":"tracing-api/src/main/java/com/palantir/tracing/api/TraceHttpHeaders.java","position":6,"original_position":6,"commit_id":"d015b357c50d84f8ace66ebbe7426a440e23eeb3","original_commit_id":"d015b357c50d84f8ace66ebbe7426a440e23eeb3","user":{"login":"iamdanfox","id":3473798,"node_id":"MDQ6VXNlcjM0NzM3OTg=","avatar_url":"https://avatars1.githubusercontent.com/u/3473798?v=4","gravatar_id":"","url":"https://api.github.com/users/iamdanfox","html_url":"https://github.com/iamdanfox","followers_url":"https://api.github.com/users/iamdanfox/followers","following_url":"https://api.github.com/users/iamdanfox/following{/other_user}","gists_url":"https://api.github.com/users/iamdanfox/gists{/gist_id}","starred_url":"https://api.github.com/users/iamdanfox/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iamdanfox/subscriptions","organizations_url":"https://api.github.com/users/iamdanfox/orgs","repos_url":"https://api.github.com/users/iamdanfox/repos","events_url":"https://api.github.com/users/iamdanfox/events{/privacy}","received_events_url":"https://api.github.com/users/iamdanfox/received_events","type":"User","site_admin":false},"body":"just to make sure this can't be misinterpreted, can we use `servers` or `hosts` or `machines` instead of `services`? I'm just aware that conjure has overloaded that term too","created_at":"2019-07-30T11:47:47Z","updated_at":"2019-07-30T11:47:47Z","html_url":"https://github.com/palantir/tracing-java/pull/206#discussion_r308676104","pull_request_url":"https://api.github.com/repos/palantir/tracing-java/pulls/206","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/palantir/tracing-java/pulls/comments/308676104"},"html":{"href":"https://github.com/palantir/tracing-java/pull/206#discussion_r308676104"},"pull_request":{"href":"https://api.github.com/repos/palantir/tracing-java/pulls/206"}}},"pull_request":{"url":"https://api.github.com/repos/palantir/tracing-java/pulls/206","id":302432084,"node_id":"MDExOlB1bGxSZXF1ZXN0MzAyNDMyMDg0","html_url":"https://github.com/palantir/tracing-java/pull/206","diff_url":"https://github.com/palantir/tracing-java/pull/206.diff","patch_url":"https://github.com/palantir/tracing-java/pull/206.patch","issue_url":"https://api.github.com/repos/palantir/tracing-java/issues/206","number":206,"state":"open","locked":false,"title":"Request log tracing","user":{"login":"j-baker","id":42533,"node_id":"MDQ6VXNlcjQyNTMz","avatar_url":"https://avatars2.githubusercontent.com/u/42533?v=4","gravatar_id":"","url":"https://api.github.com/users/j-baker","html_url":"https://github.com/j-baker","followers_url":"https://api.github.com/users/j-baker/followers","following_url":"https://api.github.com/users/j-baker/following{/other_user}","gists_url":"https://api.github.com/users/j-baker/gists{/gist_id}","starred_url":"https://api.github.com/users/j-baker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/j-baker/subscriptions","organizations_url":"https://api.github.com/users/j-baker/orgs","repos_url":"https://api.github.com/users/j-baker/repos","events_url":"https://api.github.com/users/j-baker/events{/privacy}","received_events_url":"https://api.github.com/users/j-baker/received_events","type":"User","site_admin":false},"body":"At the moment, we send trace ids and span ids with our requests. This is\r\nexcellent, and provides some coarse grained information. That said, it's\r\nvery limited - you can merely know that some number of requests were\r\ntriggered by the same underlying operation.\r\n\r\nHere, when a trace is originated with a parent span, we keep track of\r\nthat parent (called an 'originating' span id) and also send it with\r\nrequests. This means that we can use request logs to piece together\r\naccurate service level tracing as well as trace logs.\r\n\r\nIn other words, if I have a call graph which looks like:\r\n\r\n```yml\r\nservice a/foo:\r\n   check auth:\r\n     call auth service:\r\n       auth service/check auth:\r\n   do work:\r\n     call work service:\r\n       work service/do operation:\r\n         call auth service:\r\n           auth service/check auth:\r\n```\r\n\r\nthen I will see that in the trace logs (provided the request is sampled) but I can derive\r\n\r\n```yml\r\nservice a/foo:\r\n   auth service/check auth:\r\n   work service/do operation:\r\n     auth service/check auth:\r\n```\r\n\r\nfrom the request logs on all requests. Currently this is possible\r\nwhen requests are single-threaded, but not when people call services in\r\nparallel.\r\n\r\nThe possible downsides are extra network overhead by communicating a new header over the wire. However, this is likely to be very small (28 bytes per request), and if there is a problem with this we can always stop communicating the parent span id, which is almost surely useless as a request header.","created_at":"2019-07-30T10:25:48Z","updated_at":"2019-07-30T11:47:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"121b98d2b731fc5c9386fdb65b31a139868e198b","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":1430807256,"node_id":"MDU6TGFiZWwxNDMwODA3MjU2","url":"https://api.github.com/repos/palantir/tracing-java/labels/autorelease","name":"autorelease","color":"a3c6f7","default":false},{"id":1122191533,"node_id":"MDU6TGFiZWwxMTIyMTkxNTMz","url":"https://api.github.com/repos/palantir/tracing-java/labels/merge%20when%20ready","name":"merge when ready","color":"6f42c1","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/palantir/tracing-java/pulls/206/commits","review_comments_url":"https://api.github.com/repos/palantir/tracing-java/pulls/206/comments","review_comment_url":"https://api.github.com/repos/palantir/tracing-java/pulls/comments{/number}","comments_url":"https://api.github.com/repos/palantir/tracing-java/issues/206/comments","statuses_url":"https://api.github.com/repos/palantir/tracing-java/statuses/d015b357c50d84f8ace66ebbe7426a440e23eeb3","head":{"label":"palantir:jbaker/parent_rpc_span_id","ref":"jbaker/parent_rpc_span_id","sha":"d015b357c50d84f8ace66ebbe7426a440e23eeb3","user":{"login":"palantir","id":303157,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMzE1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"repo":{"id":142940399,"node_id":"MDEwOlJlcG9zaXRvcnkxNDI5NDAzOTk=","name":"tracing-java","full_name":"palantir/tracing-java","private":false,"owner":{"login":"palantir","id":303157,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMzE1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/palantir/tracing-java","description":"Java library providing zipkin-like tracing functionality","fork":false,"url":"https://api.github.com/repos/palantir/tracing-java","forks_url":"https://api.github.com/repos/palantir/tracing-java/forks","keys_url":"https://api.github.com/repos/palantir/tracing-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/palantir/tracing-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/palantir/tracing-java/teams","hooks_url":"https://api.github.com/repos/palantir/tracing-java/hooks","issue_events_url":"https://api.github.com/repos/palantir/tracing-java/issues/events{/number}","events_url":"https://api.github.com/repos/palantir/tracing-java/events","assignees_url":"https://api.github.com/repos/palantir/tracing-java/assignees{/user}","branches_url":"https://api.github.com/repos/palantir/tracing-java/branches{/branch}","tags_url":"https://api.github.com/repos/palantir/tracing-java/tags","blobs_url":"https://api.github.com/repos/palantir/tracing-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/palantir/tracing-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/palantir/tracing-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/palantir/tracing-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/palantir/tracing-java/statuses/{sha}","languages_url":"https://api.github.com/repos/palantir/tracing-java/languages","stargazers_url":"https://api.github.com/repos/palantir/tracing-java/stargazers","contributors_url":"https://api.github.com/repos/palantir/tracing-java/contributors","subscribers_url":"https://api.github.com/repos/palantir/tracing-java/subscribers","subscription_url":"https://api.github.com/repos/palantir/tracing-java/subscription","commits_url":"https://api.github.com/repos/palantir/tracing-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/palantir/tracing-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/palantir/tracing-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/palantir/tracing-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/palantir/tracing-java/contents/{+path}","compare_url":"https://api.github.com/repos/palantir/tracing-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/palantir/tracing-java/merges","archive_url":"https://api.github.com/repos/palantir/tracing-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/palantir/tracing-java/downloads","issues_url":"https://api.github.com/repos/palantir/tracing-java/issues{/number}","pulls_url":"https://api.github.com/repos/palantir/tracing-java/pulls{/number}","milestones_url":"https://api.github.com/repos/palantir/tracing-java/milestones{/number}","notifications_url":"https://api.github.com/repos/palantir/tracing-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/palantir/tracing-java/labels{/name}","releases_url":"https://api.github.com/repos/palantir/tracing-java/releases{/id}","deployments_url":"https://api.github.com/repos/palantir/tracing-java/deployments","created_at":"2018-07-31T00:05:08Z","updated_at":"2019-07-29T13:01:07Z","pushed_at":"2019-07-30T10:30:44Z","git_url":"git://github.com/palantir/tracing-java.git","ssh_url":"git@github.com:palantir/tracing-java.git","clone_url":"https://github.com/palantir/tracing-java.git","svn_url":"https://github.com/palantir/tracing-java","homepage":"","size":536,"stargazers_count":7,"watchers_count":7,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":18,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":19,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":18,"open_issues":19,"watchers":7,"default_branch":"develop"}},"base":{"label":"palantir:develop","ref":"develop","sha":"1664198220ba4a68265847d995140ef2480bc85b","user":{"login":"palantir","id":303157,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMzE1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"repo":{"id":142940399,"node_id":"MDEwOlJlcG9zaXRvcnkxNDI5NDAzOTk=","name":"tracing-java","full_name":"palantir/tracing-java","private":false,"owner":{"login":"palantir","id":303157,"node_id":"MDEyOk9yZ2FuaXphdGlvbjMwMzE1Nw==","avatar_url":"https://avatars0.githubusercontent.com/u/303157?v=4","gravatar_id":"","url":"https://api.github.com/users/palantir","html_url":"https://github.com/palantir","followers_url":"https://api.github.com/users/palantir/followers","following_url":"https://api.github.com/users/palantir/following{/other_user}","gists_url":"https://api.github.com/users/palantir/gists{/gist_id}","starred_url":"https://api.github.com/users/palantir/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/palantir/subscriptions","organizations_url":"https://api.github.com/users/palantir/orgs","repos_url":"https://api.github.com/users/palantir/repos","events_url":"https://api.github.com/users/palantir/events{/privacy}","received_events_url":"https://api.github.com/users/palantir/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/palantir/tracing-java","description":"Java library providing zipkin-like tracing functionality","fork":false,"url":"https://api.github.com/repos/palantir/tracing-java","forks_url":"https://api.github.com/repos/palantir/tracing-java/forks","keys_url":"https://api.github.com/repos/palantir/tracing-java/keys{/key_id}","collaborators_url":"https://api.github.com/repos/palantir/tracing-java/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/palantir/tracing-java/teams","hooks_url":"https://api.github.com/repos/palantir/tracing-java/hooks","issue_events_url":"https://api.github.com/repos/palantir/tracing-java/issues/events{/number}","events_url":"https://api.github.com/repos/palantir/tracing-java/events","assignees_url":"https://api.github.com/repos/palantir/tracing-java/assignees{/user}","branches_url":"https://api.github.com/repos/palantir/tracing-java/branches{/branch}","tags_url":"https://api.github.com/repos/palantir/tracing-java/tags","blobs_url":"https://api.github.com/repos/palantir/tracing-java/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/palantir/tracing-java/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/palantir/tracing-java/git/refs{/sha}","trees_url":"https://api.github.com/repos/palantir/tracing-java/git/trees{/sha}","statuses_url":"https://api.github.com/repos/palantir/tracing-java/statuses/{sha}","languages_url":"https://api.github.com/repos/palantir/tracing-java/languages","stargazers_url":"https://api.github.com/repos/palantir/tracing-java/stargazers","contributors_url":"https://api.github.com/repos/palantir/tracing-java/contributors","subscribers_url":"https://api.github.com/repos/palantir/tracing-java/subscribers","subscription_url":"https://api.github.com/repos/palantir/tracing-java/subscription","commits_url":"https://api.github.com/repos/palantir/tracing-java/commits{/sha}","git_commits_url":"https://api.github.com/repos/palantir/tracing-java/git/commits{/sha}","comments_url":"https://api.github.com/repos/palantir/tracing-java/comments{/number}","issue_comment_url":"https://api.github.com/repos/palantir/tracing-java/issues/comments{/number}","contents_url":"https://api.github.com/repos/palantir/tracing-java/contents/{+path}","compare_url":"https://api.github.com/repos/palantir/tracing-java/compare/{base}...{head}","merges_url":"https://api.github.com/repos/palantir/tracing-java/merges","archive_url":"https://api.github.com/repos/palantir/tracing-java/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/palantir/tracing-java/downloads","issues_url":"https://api.github.com/repos/palantir/tracing-java/issues{/number}","pulls_url":"https://api.github.com/repos/palantir/tracing-java/pulls{/number}","milestones_url":"https://api.github.com/repos/palantir/tracing-java/milestones{/number}","notifications_url":"https://api.github.com/repos/palantir/tracing-java/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/palantir/tracing-java/labels{/name}","releases_url":"https://api.github.com/repos/palantir/tracing-java/releases{/id}","deployments_url":"https://api.github.com/repos/palantir/tracing-java/deployments","created_at":"2018-07-31T00:05:08Z","updated_at":"2019-07-29T13:01:07Z","pushed_at":"2019-07-30T10:30:44Z","git_url":"git://github.com/palantir/tracing-java.git","ssh_url":"git@github.com:palantir/tracing-java.git","clone_url":"https://github.com/palantir/tracing-java.git","svn_url":"https://github.com/palantir/tracing-java","homepage":"","size":536,"stargazers_count":7,"watchers_count":7,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":18,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":19,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":18,"open_issues":19,"watchers":7,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/palantir/tracing-java/pulls/206"},"html":{"href":"https://github.com/palantir/tracing-java/pull/206"},"issue":{"href":"https://api.github.com/repos/palantir/tracing-java/issues/206"},"comments":{"href":"https://api.github.com/repos/palantir/tracing-java/issues/206/comments"},"review_comments":{"href":"https://api.github.com/repos/palantir/tracing-java/pulls/206/comments"},"review_comment":{"href":"https://api.github.com/repos/palantir/tracing-java/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/palantir/tracing-java/pulls/206/commits"},"statuses":{"href":"https://api.github.com/repos/palantir/tracing-java/statuses/d015b357c50d84f8ace66ebbe7426a440e23eeb3"}},"author_association":"CONTRIBUTOR"}}
other: {"actor":{"display_login":"iamdanfox"}}