errors.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package kafka
  2. type KError int16
  3. const (
  4. NO_ERROR KError = 0
  5. UNKNOWN = -1
  6. OFFSET_OUT_OF_RANGE = 1
  7. INVALID_MESSAGE = 2
  8. UNKNOWN_TOPIC_OR_PARTITION = 3
  9. INVALID_MESSAGE_SIZE = 4
  10. LEADER_NOT_AVAILABLE = 5
  11. NOT_LEADER_FOR_PARTITION = 6
  12. REQUEST_TIMED_OUT = 7
  13. BROKER_NOT_AVAILABLE = 8
  14. REPLICA_NOT_AVAILABLE = 9
  15. MESSAGE_SIZE_TOO_LARGE = 10
  16. STALE_CONTROLLER_EPOCH_CODE = 11
  17. OFFSET_METADATA_TOO_LARGE = 12
  18. )
  19. func (err KError) Error() string {
  20. // Error messages stolen/adapted from
  21. // https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol
  22. switch err {
  23. case NO_ERROR:
  24. return "kafka server: Not an error, why are you printing me?"
  25. case UNKNOWN:
  26. return "kafka server: Unexpected (unknown?) server error."
  27. case OFFSET_OUT_OF_RANGE:
  28. return "kafka server: The requested offset is outside the range of offsets maintained by the server for the given topic/partition."
  29. case INVALID_MESSAGE:
  30. return "kafka server: Message contents does not match its CRC."
  31. case UNKNOWN_TOPIC_OR_PARTITION:
  32. return "kafka server: Request was for a topic or partition that does not exist on this broker."
  33. case INVALID_MESSAGE_SIZE:
  34. return "kafka server: The message has a negative size."
  35. case LEADER_NOT_AVAILABLE:
  36. return "kafka server: In the middle of a leadership election, there is currently no leader for this partition and hence it is unavailable for writes."
  37. case NOT_LEADER_FOR_PARTITION:
  38. return "kafka server: Tried to send a message to a replica that is not the leader for some partition. Your metadata is out of date."
  39. case REQUEST_TIMED_OUT:
  40. return "kafka server: Request exceeded the user-specified time limit in the request."
  41. case BROKER_NOT_AVAILABLE:
  42. return "kafka server: Broker not available. Not a client facing error, we should never receive this!!!"
  43. case REPLICA_NOT_AVAILABLE:
  44. return "kafka server: Replica not available. What is the difference between this and LeaderNotAvailable?"
  45. case MESSAGE_SIZE_TOO_LARGE:
  46. return "kafka server: Message was too large, server rejected it to avoid allocation error."
  47. case STALE_CONTROLLER_EPOCH_CODE:
  48. return "kafka server: Stale controller epoch code. ???"
  49. case OFFSET_METADATA_TOO_LARGE:
  50. return "kafka server: Specified a string larger than the configured maximum for offset metadata."
  51. default:
  52. return "Unknown error, how did this happen?"
  53. }
  54. }
  55. type OutOfBrokers struct {
  56. }
  57. func (err OutOfBrokers) Error() string {
  58. return "kafka: Client has run out of available brokers to talk to. Is your cluster reachable?"
  59. }
  60. type EncodingError struct {
  61. }
  62. func (err EncodingError) Error() string {
  63. return "kafka: Could not encode packet."
  64. }
  65. type DecodingError struct {
  66. }
  67. func (err DecodingError) Error() string {
  68. return "kafka: Could not decode packet. Is the server really speaking kafka?"
  69. }