While deploying MirrorMakers in production, we configured it to use kafka.producer.DefaultPartitioner. By doing this and since we had the same amount partitions for the topic in local and aggregation cluster, we expect that the messages will be partitioned the same way.
This wasn't the case. Messages were properly partitioned with DefaultPartitioner on our local cluster, since the key was of the type String.
On the MirrorMaker side, the messages were not properly partitioned.
Problem is that the Array[Byte] doesn't implement hashCode function, since it is mutable collection.
Fix is to calculate the deep hash code if the key is of Array type.