Skip to content

Handle prefetchCount > max Short value #338

@Daenyth

Description

@Daenyth

The AMQP spec says that prefetchCount is a short (16-bit) value. Despite this, the java amqp-client accents an int parameter. The int then has its MSB stripped off, and the remainder is reinterpreted as a short.

For example, if you supply a prefetch of 1_000_000, that gets interpreted as a prefetchCount of 16960

0b11110100001001000000 // 1_000_000
-----0b100001001000000 // 16_960

I have two proposals:

  • fs2-rabbit can change its own prefetchCount parameter of BasicQos to be a Short instead of an Int. Then invalid values simply can't be passed. Comments can direct the user about what to do It's actually interpreted as an unsigned short, so we don't have an out of the box type for it.
  • (binary compatible) fs2-rabbit can log an error when there's an attempt to basicConsume with prefetchCount > (2^16-1). We can also optionally "round" the requested count down to exactly (2^16-1)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions