{"action":"created","issue":{"url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/issues/218","repository_url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration","labels_url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/issues/218/labels{/name}","comments_url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/issues/218/comments","events_url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/issues/218/events","html_url":"https://github.com/broadinstitute/firecloud-orchestration/pull/218","id":151381306,"number":218,"title":"GAWB-553: orchestration cookies (and logging optimization)","user":{"login":"davidangb","id":6041577,"avatar_url":"https://avatars.githubusercontent.com/u/6041577?v=3","gravatar_id":"","url":"https://api.github.com/users/davidangb","html_url":"https://github.com/davidangb","followers_url":"https://api.github.com/users/davidangb/followers","following_url":"https://api.github.com/users/davidangb/following{/other_user}","gists_url":"https://api.github.com/users/davidangb/gists{/gist_id}","starred_url":"https://api.github.com/users/davidangb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidangb/subscriptions","organizations_url":"https://api.github.com/users/davidangb/orgs","repos_url":"https://api.github.com/users/davidangb/repos","events_url":"https://api.github.com/users/davidangb/events{/privacy}","received_events_url":"https://api.github.com/users/davidangb/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"davidangb","id":6041577,"avatar_url":"https://avatars.githubusercontent.com/u/6041577?v=3","gravatar_id":"","url":"https://api.github.com/users/davidangb","html_url":"https://github.com/davidangb","followers_url":"https://api.github.com/users/davidangb/followers","following_url":"https://api.github.com/users/davidangb/following{/other_user}","gists_url":"https://api.github.com/users/davidangb/gists{/gist_id}","starred_url":"https://api.github.com/users/davidangb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/davidangb/subscriptions","organizations_url":"https://api.github.com/users/davidangb/orgs","repos_url":"https://api.github.com/users/davidangb/repos","events_url":"https://api.github.com/users/davidangb/events{/privacy}","received_events_url":"https://api.github.com/users/davidangb/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2016-04-27T13:11:54Z","updated_at":"2016-04-27T14:05:45Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/pulls/218","html_url":"https://github.com/broadinstitute/firecloud-orchestration/pull/218","diff_url":"https://github.com/broadinstitute/firecloud-orchestration/pull/218.diff","patch_url":"https://github.com/broadinstitute/firecloud-orchestration/pull/218.patch"},"body":"(no this isn't in our sprint. It really bugged me and I went to investigate it and found out afterwards Joel filed a ticket for it.)\r\n\r\nTwo changes in here, in separate commits:\r\n\r\n1) Orchestration's HttpClient, used for passthroughs and elsewhere, no longer forwards cookies on to underlying services. I cannot think of a reason that we need to send cookies. Most importantly, the particular code formation that was in use ALWAYS added a Cookie: header, even if it had an empty value ... which it did most/all the time. This resulted in an invalid cookie, which in turn caused rawls (and probably agora, thurloe, etc) to spew messages like:\r\n```\r\nrawls [WARN] [04/26/2016 21:30:52.401] [rawls-akka.actor.default-dispatcher-8] [akka://rawls/user/IO-HTTP/listener-0/0] Illegal request header: Illegal 'Cookie' header: Unexpected end of input, expected $timesCookie (line 1, pos 1):\r\n```\r\nover and over and over. I tried to dig through history to find out why we added cookies. It appears to have been added as part of #74, which ... had no reviewers???? This was ~7 months ago.\r\n\r\n2) While I was in this class, I made a slight tweak to the logRequest RequestTransformer. Previously, we would ALWAYS call `request.toString`, then perform string concat for `\"Sending request: \" + request`, and send the resultant string into the logger. The logger would then perform a level check, and since we don't run at debug level except in local-dev cases, the logger would then toss out the string; all the string concatenation and manipulation was wasted. Now, we perform the logger level check up front, and short-circuit, avoiding all the string manipulation. I would not normally worry about this level of micro-optimization, but (I was in the code anyway and) the request object is a pretty big object to serialize to string, and we were doing this for EVERY http request.\r\n\r\n- [x] **Submitter**: Rebase to develop. DO NOT SQUASH\r\n- [x] **Submitter**: Make sure Swagger is updated if API changes\r\n- [x] **Submitter**: Make sure documentation for code is complete\r\n- [x] **Submitter**: Review code comments; remove done TODOs, create stories for remaining TODOs\r\n- [x] **Submitter**: Include the JIRA issue number in the PR description\r\n- [x] **Submitter**: Add description or comments on the PR explaining the hows/whys (if not obvious)\r\n- [x] **Submitter**: Tell tech lead that the PR exists if s/he wants to look at it\r\n- [x] **Submitter**: Anoint a lead reviewer (LR). **Assign PR to LR**\r\n- [x] **LR**: Initial review by LR and others.\r\n- [ ] Comment / review / update cycle:\r\n  * Rest of team may comments on PR at will\r\n  * **LR assigns to submitter** for feedback fixes\r\n  * Submitter updates documentation as needed\r\n  * Submitter rebases to develop again if necessary\r\n  * Submitter makes further commits. DO NOT SQUASH. **Reassign to LR** for further feedback\r\n- [ ] **Tech lead**:  sign off\r\n- [x] **LR**: sign off\r\n- [x] **Assign to submitter** to finalize\r\n- [ ] **Submitter**: Squash commits, rebase if necessary\r\n- [ ] **Submitter**: Verify all tests go green, including CI tests\r\n- [ ] **Submitter**: Merge to develop \r\n- [ ] **Submitter**: Delete branch after merge\r\n- [ ] **Submitter**: Check configuration files in Jenkins in case they need changes\r\n- [ ] **Submitter**: **Test this change works on dev environment after deployment**. YOU own getting it fixed if dev isn't working for ANY reason!\r\n- [ ] **Submitter**: Verify swagger UI on dev server still works after deployment\r\n- [ ] **Submitter**: Inform other teams of any API changes via hipchat and/or email\r\n- [ ] **Submitter**: Mark JIRA issue as resolved once this checklist is completed\r\n"},"comment":{"url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/issues/comments/215094549","html_url":"https://github.com/broadinstitute/firecloud-orchestration/pull/218#issuecomment-215094549","issue_url":"https://api.github.com/repos/broadinstitute/firecloud-orchestration/issues/218","id":215094549,"user":{"login":"dmohs","id":1545444,"avatar_url":"https://avatars.githubusercontent.com/u/1545444?v=3","gravatar_id":"","url":"https://api.github.com/users/dmohs","html_url":"https://github.com/dmohs","followers_url":"https://api.github.com/users/dmohs/followers","following_url":"https://api.github.com/users/dmohs/following{/other_user}","gists_url":"https://api.github.com/users/dmohs/gists{/gist_id}","starred_url":"https://api.github.com/users/dmohs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmohs/subscriptions","organizations_url":"https://api.github.com/users/dmohs/orgs","repos_url":"https://api.github.com/users/dmohs/repos","events_url":"https://api.github.com/users/dmohs/events{/privacy}","received_events_url":"https://api.github.com/users/dmohs/received_events","type":"User","site_admin":false},"created_at":"2016-04-27T14:05:45Z","updated_at":"2016-04-27T14:05:45Z","body":"👍 This is great and I agree with your optimization."}}