I2C - Communication Between UNO, MEGA2560 and DUE

Hello together,
I try to send messages via I2C from an UNO (Master, I2C-address 1) whether to a MEGA2560 (I2C-address 2) or to a DUE (I2C-address 4).
If I send from UNO to DUE, the receiveEvent(int howMany) is triggered every time I send a message.
If I send from UNO to MEGA2560, the receiveEvent(int howMany) is triggered by the first message only.
If I continue sending messages the receiveEvent on the MEGA2560 is not triggered any more.
The only thing to do is to reset the MEGA2560.

This is the code on my MEGA2560 (Slave)

#include <Wire.h>

 
// a string to hold incoming data
String serialInputString = "";
String serialInputStringCopy = "Empty";
boolean serialInputStringComplete = false;

 
 void setup()
{
 Serial.begin(9600);
 Wire.begin(2);                // join i2c bus with address #2
 Wire.onReceive(receiveEvent); // register event
}

 
 void loop()
 {
   if(serialInputStringComplete)
   {
     Serial.println(serialInputString);
     serialInputStringCopy = serialInputString;
     if(serialInputString.substring(0,3) == "COM")
     {
       commandInterpreter(serialInputString);
     }
     serialInputString = "";
     serialInputStringComplete = false;
  }
  
}//void loop()

void commandInterpreter(String commandString)
{
  Serial.print("CommandInterpreter called with CommandString: ");
  Serial.println(commandString);
  
  if(commandString.substring(3,6) == "STP")
  {
    Serial.print("Command interpreted as STP-Command with ");
    int stpStepCountValue = commandString.substring(6).toInt();
    Serial.print(stpStepCountValue);
    Serial.println(" steps");
    stpStepCountValue = constrain(stpStepCountValue, -10000, 10000);

  }
  
  
}//void commandInterpreter(String commandString)

void serialEvent()
{
  Serial.println("SerialEventTriggered");
  
  while (Serial.available())
  {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the serialInputString:
    if(inChar != '\n')
    {
      serialInputString += inChar;
    }
    else
    {
      serialInputStringComplete = true;
    }
  }
  
}//void serialEvent()

void receiveEvent(int howMany)
{
  Serial.print("ReceiveEventTriggered with ");
  Serial.print(howMany);
  Serial.println(" bytes");

  while (1 < Wire.available()) // loop through all but the last
  {
    char inChar = Wire.read(); // receive byte as a character
    if(inChar != '\n')
    {
      serialInputString += inChar;
    }
    else
    {
      serialInputStringComplete = true;
    }    
  }
}

In a different setup with the MEGA2560 and DUE (before I got the UNO) I had a proper, reliable and stable communication between them.

This is really strange to me and I would be very happy for every hint.

Best regards,

Christoph

Update:

I found as a "workaround" when I recall Wire.begin(2) in the receiveEvent(int howMany) as the last call within the event,
the UNO continues receiving messages.

Christoph