When producer send data to brokers, actually it send only to only one - the leader. Leader broker should confirm that message has been received. If you configure broker as described, the leader will await acknowledgments from replicas. If something goes wrong, the leader don't send its own confirmation. When producer doesn't receive acknowledgment from the leader, it will understand that message has NOT been delivered.
For simplicity, I dropped out that there are some retires before any failure message.
Assuming that,
Since producer doesn't receive ack, it will re-send original message. If connection has been restored then broker could see that this message has been received already. Then broker send ack to producer.
If message was written to the leader but replicas was failed to ack, then leader will treat such message as not saved and remove from its storage.
producerwhen you say 'client' ? - ADSA typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas to 2, and produce with acks of "all". This will ensure that the producer raises an exception if a majority of replicas do not receive a write- Deadpoolis it only loss of ackyes but that might be very rare @Balan - Deadpool