Hi all -- continuing on the compatibility discussion: I've found that it is very difficult to identify when a server does not recognize an api (I'm using kafka-python to submit wire-protocol requests). For example, when I send a ConsumerMetadataRequest to an 0.8.1.1 server, I get a closed socket *[stacktrace below]. The server raises an error internally, but does not send any meaningful response. I'm not sure whether this is the intended behavior, but maintaining clients in an ecosystem of multiple server versions with different API support it would be great to have a way to determine what the server supports and what it does not.
Some suggestions: (1) An UnknownAPIResponse that is returned for any API or API Version request that is unsupported. (2) A server metadata API to get the list of supported APIs and/or API versions supported. (3) A server metadata API to get the published version of the server (0.8.2 v. 0.8.1.1, etc). Thoughts? Dana Powers Rdio, Inc. dana.pow...@rd.io rdio.com/people/dpkp/ *stacktrace: ``` [2015-01-12 13:03:55,719] ERROR Closing socket for /127.0.0.1 because of error (kafka.network.Processor) kafka.common.KafkaException: Wrong request type 10 at kafka.api.RequestKeys$.deserializerForKey(RequestKeys.scala:57) at kafka.network.RequestChannel$Request.<init>(RequestChannel.scala:53) at kafka.network.Processor.read(SocketServer.scala:353) at kafka.network.Processor.run(SocketServer.scala:245) at java.lang.Thread.run(Thread.java:722) ```