{"push_id":2426201317,"size":11,"distinct_size":4,"ref":"refs/heads/connection_pool_waiter","head":"14c8088ca332a76ad4f0fc82e1d64f0f8d738869","before":"218935746ddff396048ef82239d6a89673495a7f","commits":[{"sha":"aa690cdf8874bb698b3089eebb9790745b257d6b","author":{"name":"tadukurow","email":"4b06f9d2a579caa830b089b82ae35407a533e666@gmail.com"},"message":"Ignore dial error in dbtest after stopping server. (#122)\n\n* Ignore dial error when server is stopped. related to #117\r\n\r\n* Print dbtest server starting error before panic.\r\n\r\nAs seen in #117, dbtest start() throws a panic when it can't start mongo.\r\nThis panic is picked up by a panichandler obscuring the actual problem.\r\nThis PR simply prints the error start() encounters to stderr, before throwing the panic.","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/aa690cdf8874bb698b3089eebb9790745b257d6b"},{"sha":"e854ed5cdaeeaca5b861d72502be0ae2b33334ff","author":{"name":"KJ Tsanaktsidis","email":"45b5c0f3f7c53082a918082a26a86733f06d87b3@gmail.com"},"message":"Add a test for globalsign/mgo#120\n\nWe've seen a deadlock happen occasionally where syncServers needs to\nacquire a socket to call isMaster, but the socket acquisition needs to\nknow the server topology which isn't known yet. See globalsign/mgo#120\nissue for a detailed breakdown.\n\nThis replicates the issue by setting up a mongo \"server\" which closes\nsockets as soon as they're opened; about 20% of the time, this will\ntrigger the deadlock because the acquired socket for ismaster() dies and\nneeds to be reacquired.","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/e854ed5cdaeeaca5b861d72502be0ae2b33334ff"},{"sha":"dc0f590e7eb754a87132cb489688751f25032d41","author":{"name":"KJ Tsanaktsidis","email":"45b5c0f3f7c53082a918082a26a86733f06d87b3@gmail.com"},"message":"Propose a fix for globalsign/mgo#120\n\nAs discussed in the issue globalsign/mgo#120, isMaster() can cause a\ndeadlock with the topology scanner if the connection it makes dies\nbefore running the command; mgo automagically attempts to make another\nsocket in acquireSocket, but this can't work without topology.\n\nThis commit forces isMaster() to actually run on the intended socket.","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/dc0f590e7eb754a87132cb489688751f25032d41"},{"sha":"4bc35c4e2a8c3ab2681fe5de97d97ce4bb1af110","author":{"name":"Dom","email":"57c1edfca234cd07722cf64d05b9c73899cfaa0d@users.noreply.github.com"},"message":"Merge branch 'development' into fix_dial_deadlock","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/4bc35c4e2a8c3ab2681fe5de97d97ce4bb1af110"},{"sha":"3838eb8b2417e360cf20a64bd096a18a0186de1a","author":{"name":"Damir Vandic","email":"616e881177e53541ea47e5917a60deb2554e079d@dvic.io"},"message":"Make run on socket helper methods private","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/3838eb8b2417e360cf20a64bd096a18a0186de1a"},{"sha":"2e0e86095f3dfafc323d94064197676c4c840e4c","author":{"name":"Konstantinos Tsanaktsidis","email":"d5503815201028dca8d33de0dbcd0a2d0d5df297@zendesk.com"},"message":"Merge pull request #1 from dvic/fix_dial_deadlock\n\nMake run on socket helper methods private","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/2e0e86095f3dfafc323d94064197676c4c840e4c"},{"sha":"876956d3205ac690e6488c1ba6fed94943c82718","author":{"name":"Maciej Galkowski","email":"09cd26dc590a8e627d56a467ab0895012a7a0534@gmail.com"},"message":"Fix for deadlock in cluster: isMaster() globalsign/mgo#120 (#121)\n\nProposed fix for deadlock in globalsign/mgo#120","distinct":false,"url":"https://api.github.com/repos/zendesk/mgo/commits/876956d3205ac690e6488c1ba6fed94943c82718"},{"sha":"170f2927240b3ac952ce66638be1dfa5a6856186","author":{"name":"KJ Tsanaktsidis","email":"45b5c0f3f7c53082a918082a26a86733f06d87b3@gmail.com"},"message":"Add signaling support for connection pool waiting\n\nThe current behaviour when the poolLimit is reached and a new connection\nis required is to poll every 100ms to see if there is now headroom to\nmake a new connection. This adds tremendous latency to the\nlimit-hit-path.\n\nThis commit changes the checkout behaviour to watch on a condition\nvariable for connections to become available, and the checkin behaviour\nto signal this variable. This should allow waiters to use connections\nimmediately after they become available.\n\nA new parameter is also added to DialInfo, PoolTimeout, which is the\nmaximum time that clients will wait for connection headroom to become\navailable. By default this is unlimited.","distinct":true,"url":"https://api.github.com/repos/zendesk/mgo/commits/170f2927240b3ac952ce66638be1dfa5a6856186"},{"sha":"96f1edb25b7b14f89e3a1e441d97d5154d6a64f0","author":{"name":"KJ Tsanaktsidis","email":"45b5c0f3f7c53082a918082a26a86733f06d87b3@gmail.com"},"message":"Fix a code style mistake with else if -> if","distinct":true,"url":"https://api.github.com/repos/zendesk/mgo/commits/96f1edb25b7b14f89e3a1e441d97d5154d6a64f0"},{"sha":"c4bb1d67fd239a6263709d6c9c8b9563c2075791","author":{"name":"KJ Tsanaktsidis","email":"45b5c0f3f7c53082a918082a26a86733f06d87b3@gmail.com"},"message":"Add stats for connection pool timings\n\nThis exposes four new counters\n\n* The number of times a socket was successfully obtained from the\n  connection pool\n* The number of times the connection pool needed to be waited on\n* The total time that has been spent waiting for a conneciton to become\n  available\n* The number of times socket acquisition failed due to a pool timeout","distinct":true,"url":"https://api.github.com/repos/zendesk/mgo/commits/c4bb1d67fd239a6263709d6c9c8b9563c2075791"},{"sha":"14c8088ca332a76ad4f0fc82e1d64f0f8d738869","author":{"name":"KJ Tsanaktsidis","email":"45b5c0f3f7c53082a918082a26a86733f06d87b3@gmail.com"},"message":"Send events thorough a channel to let users build histograms\n\nUsers of the library might want to build histograms of things like how\nlong goroutines are waiting for teh pool. Rather than building in some\nkind of histograming solution (with what bins??), provide the events to\nthe user over a channel so that if they choose, they can consume the\nchannel and handle the timing data however they want.","distinct":true,"url":"https://api.github.com/repos/zendesk/mgo/commits/14c8088ca332a76ad4f0fc82e1d64f0f8d738869"}]}
{"actor":{"display_login":"KJTsanaktsidis"}}