| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously there were two methods:
* `_find_coordinator_id()`
* `_find_many_coordinator_ids()`
But they do basically the same thing internally. And we need the plural
two places, but the singular only one place.
So merge them, and change the function signature to take a list of
`group_ids` and return a dict of `group_id: coordinator_id`s.
As a result of this, the `describe_groups()` command should scale better
because the `_find_coordinator_ids()` command issues all the requests
async, instead of sequentially blocking as the `described_groups()` used
to do.
|
|
|
| |
Small cleanup leftover from https://github.com/dpkp/kafka-python/pull/2035
|
|
|
|
|
| |
* Add consumergroup related errors
* Add DeleteGroups to protocol.admin
* Implement delete_groups feature on KafkaAdminClient
|
|
|
| |
Currently there's no way to pass timeout to check_version if called from admin.
|
|
|
|
|
|
| |
Adding namedtuples for DescribeConsumerGroup response; Adding Serialization of MemberData and MemberAssignment for the response
Co-authored-by: Apurva Telang <atelang@paypal.com>
Co-authored-by: Jeff Widman <jeff@jeffwidman.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In KAFKA-8962 the `AdminClient.describe_topics()` call was changed from
using the controller to using the `least_loaded_node()`:
https://github.com/apache/kafka/commit/317089663cc7ff4fdfcba6ee434f455e8ae13acd#diff-6869b8fccf6b098cbcb0676e8ceb26a7R1540
As a result, no metadata request/response processing needs to happen
through the controller, so it's safe to remove the custom
error-checking. Besides, I don't think this error-checking even added
any value because AFAIK no metadata response would return a
`NotControllerError` because the recipient broker wouldn't realize the
metadata request was intended for only the controller.
Originally our admin client was implemented using the least-loaded-node,
then later updated to the controller. So updating it back to
least-loaded node is a simple case of reverting the associated commits.
This reverts commit 7195f0369c7dbe25aea2c3fed78d2b4f772d775b.
This reverts commit 6e2978edee9a06e9dbe60afcac226b27b83cbc74.
This reverts commit f92889af79db08ef26d89cb18bd48c7dd5080010.
|
| |
|
| |
|
|
|
|
| |
Closes #1994
|
| |
|
|
|
|
| |
`api_version` (#1953)
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
* Fix describe config for multi-broker clusters
Currently all describe config requests are sent to "least loaded node". Requests for broker configs must, however, be sent to the specific broker, otherwise an error is returned. Only topic requests can be handled by any node.
This changes the logic to send all describe config requests to the specific broker.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This splits the `_find_coordinator_id()` method (which is blocking) into
request generation / response parsing methods.
The public API does not change. However, this allows power users who are
willing to deal with risk of private methods changing under their feet
to decouple generating the message futures from processing their
responses. In other words, you can use these to fire a bunch of requests
at once and delay processing the responses until all requests are fired.
This is modeled on the work done in #1845.
Additionally, I removed the code that tried to leverage the error
checking from `cluster.add_group_coordinator()`. That code had changed
in #1822, removing most of the error checking... so it no longer adds
any value, but instead merely increases complexity and coupling.
|
|
|
|
|
|
| |
Previously the `sasl_kerberos_domain_name` was missing from the Admin
client. It is already present in the Consumer/Producer, and in all three
cases gets transparently passed down to the client.
|
|
|
| |
Updated to include SASL_PLAINTEXT and SASL_SSL as options for security_protocol.
|
|
|
|
|
|
|
|
|
|
| |
This breaks some of the consumer operations into request generation /
response parsing methods.
The public API does not change. However, this allows power users who are
willing to deal with risk of private methods changing under their feet
to decouple generating the message futures from processing their
responses. In other words, you can use these to fire a bunch of request
at once and delay processing the responses until all requests are fired.
|
|
|
|
|
| |
Use `futures` to parallelize calls to `_send_request_to_node()`
This allows queries that need to go to multiple brokers to be run in parallel.
|
| |
|
| |
|
|
|
|
|
|
|
| |
`getattr(object, 'x', object.y)` will evaluate the default argument
`object.y` regardless of whether `'x'` exists.
For details see: https://stackoverflow.com/q/31443989/770425
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we weren't accounting for when the response tuple also has a
`error_message` value.
Note that in Java, the error fieldname is inconsistent:
- `CreateTopicsResponse` / `CreatePartitionsResponse` uses `topic_errors`
- `DeleteTopicsResponse` uses `topic_error_codes`
So this updates the `CreateTopicsResponse` classes to match.
The fix is a little brittle, but should suffice for now.
|
|
|
| |
`isinstance()` won't work here, as the types require identity comparison.
|
|
|