{"push_id":811007184,"size":29,"distinct_size":2,"ref":"refs/heads/feature/producer-futures","head":"4c4e128f15135ccff8455526bbcb59d8d3be3600","before":"1613635724a3e141a2c7b16db7eba3554fbda211","commits":[{"sha":"2346f049f95b8fb6c5602d327d9ecca538d41176","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"cluster: hold only weakrefs to Topics\n\nThis breaks a reference cycle between Cluster and Topic.  As per the\ndiscussion in #257, we didn't want to make Topic._cluster a weakref, as\nthis would break user code that retains a reference to the Topic only.\nInstead, we make TopicDict lazily instantiate Topics (which should have\nthe added benefit of saving a bunch of space if a cluster has many\ntopics and partitions), while storing only a weakref to it.\n\nThis also moves Cluster._update_topics() into TopicDict, because it\nneeds to know about the weakref implementation details: if a Topic\nhasn't been instantiated, it shouldn't try to update it.\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/2346f049f95b8fb6c5602d327d9ecca538d41176"},{"sha":"9b5c47c7899aa82dc182f648b666a15b94389491","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"broker: fix incorrect docstring\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/9b5c47c7899aa82dc182f648b666a15b94389491"},{"sha":"d6255c51b763ffc4c981a21aa90bb45e328646f6","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"cluster: fix topic auto-create (even on fresh cluster)\n\nThe grandparent commit (which made TopicDict carry weakrefs) introduced\na bug, namely that topic auto-creation via __missing__() caused an\nAttributeError to be raised, because I forgot to update __missing__ for\nthe new nature of the dict entries.\n\nThere was no test coverage to catch this, so tests are added here too.\nTo make those tests pass reliably, we needed to ensure that topic\nauto-creation works even on a fresh cluster.  It turns out that with the\nupdated version of Cluster._get_metadata (per the grandparent commit),\nthat was just a one-line change - that is, as a side-effect, we've now\nalso addressed #175: auto-creation works on a freshly bootstrapped kafka\n0.8.2 cluster.\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/d6255c51b763ffc4c981a21aa90bb45e328646f6"},{"sha":"a79b2042e1c391fb775e3fefe2b1309dae50425b","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"merge master","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/a79b2042e1c391fb775e3fefe2b1309dae50425b"},{"sha":"4fdaa0bdade517a7c2c5a081ed59b1c3e8ccf721","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"cluster: improve topic auto-creation\n\nThe tests added with d6255c51b7 would sometimes fail, when for one\nreason or another the test cluster would take longer to set up the new\ntopic than Cluster._create_topic was willing to wait.\n\nWe had to give up after some retries, because we didn't try to\ndistinguish between cluster settings where auto-create was enabled or\ndisabled.  This commit adds that ability, by letting _create_topic\ninspect the error value in the metadata response.\n\nIf the error is a LeaderNotAvailable, that means the cluster\nis actually busy setting up our new topic, so we know it may be worth\nwaiting a bit longer than the fixed 5 retries we had before.\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/4fdaa0bdade517a7c2c5a081ed59b1c3e8ccf721"},{"sha":"794ed848c13dd29faf41102c6c11752a23ce300b","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"enfore breaking api change with a runtime error","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/794ed848c13dd29faf41102c6c11752a23ce300b"},{"sha":"c235bcdcc93484b819ab1f757cc673bd24e7c9ec","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"better changelog","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/c235bcdcc93484b819ab1f757cc673bd24e7c9ec"},{"sha":"f251e8f49be4ed0530c8d2982e5d8fa3916c0d36","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"use typeerror, not valueerror","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/f251e8f49be4ed0530c8d2982e5d8fa3916c0d36"},{"sha":"6768598e0fae9988fa9064a7d6cdb9bde1217fba","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett J. Butler"},"message":"Merge pull request #262 from Parsely/fix/break-cluster-topic-refcycle\n\nBreak Cluster-Topic refcycle","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/6768598e0fae9988fa9064a7d6cdb9bde1217fba"},{"sha":"583087bb25e3d8db1a206e65ff56832fcc5e7cbc","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"hold a weak reference to topic in partition\n\nthis fixes a hanging broker connection when KafkaClient is deleted, per #257.\n\nThis makes it impossible to do something like\nclient.topics[mytopic].partitions[0].latest_available_offset()\nit will fail with a weakref error. This operation can still be performed by simply saving a reference to the\nTopic instance in client code prior to calling a method on a Partition instance.\n\nThis is slightly inelegant in that it limits the kinds of code clients can write, but it\nfixes an important client cleanup issue in a lightweight way.","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/583087bb25e3d8db1a206e65ff56832fcc5e7cbc"},{"sha":"56070e4b03c9c3b2f51f0b1e1d1166c0ac941501","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"remove unused import","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/56070e4b03c9c3b2f51f0b1e1d1166c0ac941501"},{"sha":"5daa0b47234630ecd470ee3c6dbcc079befcadde","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"lower log level for common situation","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/5daa0b47234630ecd470ee3c6dbcc079befcadde"},{"sha":"e0a8dfaf3eee905f6141251c3392422acdff122b","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"keep one strong reference to the cluster","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/e0a8dfaf3eee905f6141251c3392422acdff122b"},{"sha":"ad0d06bd4acbe95cdfa8dfe858dfab5d162a4d09","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"increment version","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/ad0d06bd4acbe95cdfa8dfe858dfab5d162a4d09"},{"sha":"de0858c385c45ef2feff3be19c46849558d619c4","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"update comparison link","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/de0858c385c45ef2feff3be19c46849558d619c4"},{"sha":"ce8092e1c81907f0023b46391f2cacc18e26f418","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"fix rst","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/ce8092e1c81907f0023b46391f2cacc18e26f418"},{"sha":"41d9818e0fe5c62b0d1fe60bacbc762e5299fa41","author":{"email":"f68de01ff83697c4a297e4c2789def66c17105fa@gmail.com","name":"Emmett Butler"},"message":"allow wheels","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/41d9818e0fe5c62b0d1fe60bacbc762e5299fa41"},{"sha":"c7296b25c26f0b6c3e453a2651c3f437f1593c02","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"test_producer: add test demonstrating issue #278\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/c7296b25c26f0b6c3e453a2651c3f437f1593c02"},{"sha":"c434696cbdf43f68ab6e6058189e0b121a204fb9","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"producer: don't expect response if required_acks=0\n\nThis fixes #278.\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/c434696cbdf43f68ab6e6058189e0b121a204fb9"},{"sha":"94e3fcb6757f2509f241efff236ec9b58e84531f","author":{"email":"e4c1ab9da74060df152545062ee274845648ed6c@yungchin.nl","name":"Yung-Chin Oei"},"message":"test_cluster: demonstrate issue #277\n\nRequesting an internal topic causes the topic auto-creation logic to\nrecurse indefinitely, because it assumes the topic does not exist, when\nin fact it is merely being filtered out.\n\nSigned-off-by: Yung-Chin Oei <yungchin@yungchin.nl>","distinct":false,"url":"https://api.github.com/repos/Parsely/pykafka/commits/94e3fcb6757f2509f241efff236ec9b58e84531f"}]}