Program: 48640
Project: 48640
Buggy source:
@Test public void testTxnCommit() throws TransactionException {
  Config config=new Config();
  final TestHazelcastInstanceFactory factory=createHazelcastInstanceFactory(2);
  final HazelcastInstance h1=factory.newHazelcastInstance(config);
  final HazelcastInstance h2=factory.newHazelcastInstance(config);
  final String map1="String_Node_Str";
  final String map2="String_Node_Str";
  final String key="String_Node_Str";
  boolean b=h1.executeTransaction(options,new TransactionalTask<Boolean>(){
    public Boolean execute(    TransactionalTaskContext context) throws TransactionException {
      final TransactionalMap<Object,Object> txMap1=context.getMap(map1);
      final TransactionalMap<Object,Object> txMap2=context.getMap(map2);
      txMap1.put(key,"String_Node_Str");
      assertEquals("String_Node_Str",txMap1.put(key,"String_Node_Str"));
      assertEquals("String_Node_Str",txMap1.get(key));
      txMap2.put(key,"String_Node_Str");
      assertEquals("String_Node_Str",txMap2.put(key,"String_Node_Str"));
      assertEquals("String_Node_Str",txMap2.get(key));
      assertEquals(true,txMap1.containsKey(key));
      assertEquals(true,txMap2.containsKey(key));
      assertNull(h2.getMap(map1).get(key));
      assertNull(h2.getMap(map2).get(key));
      return true;
    }
  }
);
  assertTrue(b);
  assertEquals("String_Node_Str",h1.getMap(map1).get(key));
  assertEquals("String_Node_Str",h2.getMap(map1).get(key));
  assertEquals("String_Node_Str",h1.getMap(map2).get(key));
  assertEquals("String_Node_Str",h2.getMap(map2).get(key));
}

Fixed version (ground truth):
@Test public void testTxnCommit() throws TransactionException {
  Config config=new Config();
  final TestHazelcastInstanceFactory factory=createHazelcastInstanceFactory(2);
  final HazelcastInstance h1=factory.newHazelcastInstance(config);
  final HazelcastInstance h2=factory.newHazelcastInstance(config);
  final String map1="String_Node_Str";
  final String map2="String_Node_Str";
  final String key="String_Node_Str";
  boolean b=h1.executeTransaction(options,new TransactionalTask<Boolean>(){
    public Boolean execute(    TransactionalTaskContext context) throws TransactionException {
      final TransactionalMap<Object,Object> txMap1=context.getMap(map1);
      final TransactionalMap<Object,Object> txMap2=context.getMap(map2);
      txMap1.put(key,"String_Node_Str");
      assertEquals("String_Node_Str",txMap1.put(key,"String_Node_Str"));
      assertEquals("String_Node_Str",txMap1.get(key));
      txMap2.put(key,"String_Node_Str");
      assertEquals("String_Node_Str",txMap2.put(key,"String_Node_Str"));
      assertEquals("String_Node_Str",txMap2.get(key));
      assertEquals(true,txMap1.containsKey(key));
      assertEquals(true,txMap2.containsKey(key));
      assertNull(h2.getMap(map1).get(key));
      assertNull(h2.getMap(map2).get(key));
      return true;
    }
  }
);
  assertTrue(b);
  assertEquals("String_Node_Str",h1.getMap(map1).get(key));
  assertEquals("String_Node_Str",h2.getMap(map1).get(key));
  assertEquals("String_Node_Str",h1.getMap(map2).get(key));
  assertEquals("String_Node_Str",h2.getMap(map2).get(key));
  assertFalse(h1.getMap(map1).isLocked(key));
  assertFalse(h1.getMap(map2).isLocked(key));
}