{"action":"created","issue":{"url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4674","repository_url":"https://api.github.com/repos/ipfs/go-ipfs","labels_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4674/labels{/name}","comments_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4674/comments","events_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4674/events","html_url":"https://github.com/ipfs/go-ipfs/issues/4674","id":295707723,"number":4674,"title":"Bitswap sessions don't treat independent gets as independent","user":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars2.githubusercontent.com/u/310393?v=4","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"labels":[{"id":172465030,"url":"https://api.github.com/repos/ipfs/go-ipfs/labels/bitswap","name":"bitswap","color":"207de5","default":false},{"id":109732110,"url":"https://api.github.com/repos/ipfs/go-ipfs/labels/bug","name":"bug","color":"fc2929","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":6,"created_at":"2018-02-08T23:54:23Z","updated_at":"2018-02-14T05:16:34Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Scenario:\r\n\r\n1. Construct a session.\r\n2. Call Get in one thread for key K with ctxA\r\n3. Call Get in another thread for key K with ctxB.\r\n\r\nCanceling ctxA will cause the second Get to block forever.\r\n\r\nWe need to reference count interest.\r\n\r\n(Note: By inspection, I haven't confirmed this)"},"comment":{"url":"https://api.github.com/repos/ipfs/go-ipfs/issues/comments/365499001","html_url":"https://github.com/ipfs/go-ipfs/issues/4674#issuecomment-365499001","issue_url":"https://api.github.com/repos/ipfs/go-ipfs/issues/4674","id":365499001,"user":{"login":"Stebalien","id":310393,"avatar_url":"https://avatars2.githubusercontent.com/u/310393?v=4","gravatar_id":"","url":"https://api.github.com/users/Stebalien","html_url":"https://github.com/Stebalien","followers_url":"https://api.github.com/users/Stebalien/followers","following_url":"https://api.github.com/users/Stebalien/following{/other_user}","gists_url":"https://api.github.com/users/Stebalien/gists{/gist_id}","starred_url":"https://api.github.com/users/Stebalien/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stebalien/subscriptions","organizations_url":"https://api.github.com/users/Stebalien/orgs","repos_url":"https://api.github.com/users/Stebalien/repos","events_url":"https://api.github.com/users/Stebalien/events{/privacy}","received_events_url":"https://api.github.com/users/Stebalien/received_events","type":"User","site_admin":false},"created_at":"2018-02-14T05:16:34Z","updated_at":"2018-02-14T05:16:34Z","author_association":"CONTRIBUTOR","body":"Present @whyrusleeping,\r\n\r\n> also, the problem described in the issue comment is not an issue. This is properly handled (as evidenced by the TestMultipleSessions test).\r\n\r\nMeet past @whyrusleeping,\r\n\r\n> Hrm... Youre right. I didnt account for that, I generally didn't put a lot of thought into multiple callers into a single session.\r\n\r\n(this issue is about multiple Get calls on a single session)\r\n\r\n---\r\n\r\n> unsure what you mean with \"punt and replace\".\r\n\r\nI mean that, given that we will need to do a large refactor anyways to make graphsync work, we might as well write that from scratch (keeping the lessons learned from bitswap in mind) as bitswap has grown quite complicated. Basically, I'm wondering if sinking any more time into bitswap is really worth it at this point. There's a lot of technical debt there.\r\n\r\n> but on the duplicate providers bit, I think that what we're missing is a smarter layer between the DHT and bitswap\r\n\r\nYou're absolutely right about that. That'll actually be important when we have multiple exchanges. Actually, in light of multiple exchanges..., having separate sessions kind of makes sense.\r\n\r\n> The hard part is figuring out where to make it put that block to the blockstore.\r\n\r\nSo, I'd kind of like to drive this from the top down with a dispatching DAGService that treats the exchange as a *slow* DAG and the local DAG as a cache (recall https://github.com/ipfs/notes/issues/255)."}}
{"actor":{"display_login":"Stebalien"}}