{"push_id":612439792,"size":6,"distinct_size":0,"ref":"refs/heads/master","head":"8c3b161bd319fa0ce43af36469ac115a51ed53fc","before":"f64876a64b9d558109a6f115458291f05228d08b","commits":[{"sha":"aa1dd47bd2299366fd25d28bacd79d1f9198398c","author":{"email":"ac8fcaf748b7189c49a384a5580dc9e80633299a@gmail.com","name":"Matthias Radestock"},"message":"accumulate gossip data until it can be sent\nIntroduce an intermediary - GossipSender - between GossipChannel and\nConnection. This accumulates gossip data (now represented by the new\nGossipData interface) from the former until it can be passed onto the\nlatter, allowing the former to proceed when the latter may be blocked\non i/o.\n\nThis\n\n1) prevents deadlocks that arise from cycles in the communication\ntopology\n\n2) improves performance by allowing GossipChannel and its calling code\nto proceed when connection i/o is blocked\n\n3) improves performance by accumulating GossipData - the accumulated\ndata often is considerably more compact than the sum of all the\naccumulated bits, and it is transmitted in a single communication\nevent.\n\nIn order to support accumulation, the GossipData interface has a Merge\nmethod. Furthermore, encoding is deferred until the data can actually\nbe sent, since accumulation would be hard/impossible to encoded\ndata. This required changes on some interfaces, most notably Gossiper.\n\nThe implementation of GossipData for topology gossip is\nTopologyGossipData. It carries a reference to Peers and a set of\nPeerNames, indexing into Peers and referencing the Peer entries which\nhave changed. Previously updates were represented as a list of Peer\nentries. The indirection via PeerNames allows Encode to omit entries\nwhich have been removed. The change in representation required changes\nto the signature of some methods on Peers.\n\nNote that all the above only applies to the \"periodic gossip\" portion\nof the Gossiper API, which topology gossip in fact uses for *all*\ngossip. GossipUnicast and GossipBroadcast are unchanged, but could\nconceivably receive the same treatment in the future.\n\nFixes #445.","distinct":false,"url":"https://api.github.com/repos/rade/weave/commits/aa1dd47bd2299366fd25d28bacd79d1f9198398c"},{"sha":"d7959d8ca56b2722aebc32fb647c4df9f9e5c9c2","author":{"email":"b758fc1d1058bf3971637fc70c4f78c0bff3019e@gmail.com","name":"Adam Harrison"},"message":"Add outbound and established flags to connection structure diagram","distinct":false,"url":"https://api.github.com/repos/rade/weave/commits/d7959d8ca56b2722aebc32fb647c4df9f9e5c9c2"},{"sha":"70a824ea07a4457f3695e44b1bc157d70696346f","author":{"email":"ac8fcaf748b7189c49a384a5580dc9e80633299a@gmail.com","name":"rade"},"message":"Merge pull request #477 from awh/fix_how_it_works_doc\n\nAdd outbound and established flags to connection structure diagram","distinct":false,"url":"https://api.github.com/repos/rade/weave/commits/70a824ea07a4457f3695e44b1bc157d70696346f"},{"sha":"0bcadb1e4e78f54e73f007ee5b52377e6a943852","author":{"email":"de652539b24efdf404b95def4635bf3dbfd846aa@gmail.com","name":"Bryan Boreham"},"message":"Merge pull request #476 from rade/445-accumulate-gossip\n\nLGTM.  Fixes #445.","distinct":false,"url":"https://api.github.com/repos/rade/weave/commits/0bcadb1e4e78f54e73f007ee5b52377e6a943852"},{"sha":"7bd0f7dbae0e93ea1120b70cbb9d5ee7f7b20fce","author":{"email":"ac8fcaf748b7189c49a384a5580dc9e80633299a@gmail.com","name":"Matthias Radestock"},"message":"don't modify state in ConnectionMaker.String\nit's just wrong","distinct":false,"url":"https://api.github.com/repos/rade/weave/commits/7bd0f7dbae0e93ea1120b70cbb9d5ee7f7b20fce"},{"sha":"8c3b161bd319fa0ce43af36469ac115a51ed53fc","author":{"email":"ac8fcaf748b7189c49a384a5580dc9e80633299a@gmail.com","name":"Matthias Radestock"},"message":"cosmetic","distinct":false,"url":"https://api.github.com/repos/rade/weave/commits/8c3b161bd319fa0ce43af36469ac115a51ed53fc"}]}