Android Firebase: onChildAdded called with only delta after setValue

In my chat app, when a msg notification is received in the FcmService, a deliveryReceipt is set for that msgId.

This is how I am updating a specific field of the message object when a notification for that message is received.

            .child("-L7VySOmgmcePMVokcVj") //messageId

This successfully updates the message with the new field "deliveryReceipts":

enter image description here

Now when I open the chat itself, to sync all chat messages, the last iteration of onChildAdded() is triggered with just the field I explicitly updated previously, i.e. "deliveryReceipts".

            .addChildEventListener(new ChildEventListener() {
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    final ChatData chatData = dataSnapshot.getValue(ChatData.class);
                    if (chatData != null) {
                        Log.d(TAG, "onChildAdded: " + dataSnapshot.getKey());

This is how the Firebase filtered logs look like:

CHILD_ADDED: { -L7W43o02tkhToxee5dQ: {deliveryReceipts={KS3lGdZkByQI3QTASUuhozfTUB12=1520973407769}, serverTimestamp=1520973403735, authorUid=BjqACatBjUSm2kFeEEeUjL7NsCC3, createdTimestamp=1520973403883, lubbCount=0, message=H ICICI} }

CHILD_ADDED: { -L7W8HtvWnRix1WMpB0Z: {deliveryReceipts={KS3lGdZkByQI3QTASUuhozfTUB12=1520974512436}} }

The last message only has "deliveryReceipts" which is the new field the client had set for that message, missing old fields like authorUid, createdTimestamp, etc.

As you can see in the logs. the previous messages returned in onChildAdded() are fine. Only the last, recently updated message is broken.

I cannot figure out why onChildAdded is called with just the field I had updated earlier, without all the other fields.