Buggy code:
@ OperatorAnnotation ( checkpointableWithinAppWindow = false ) public abstract class DimensionsStoreHDHT extends AbstractSinglePortHDHTWriter < AggregateEvent > { private static final Logger logger = LoggerFactory . getLogger ( DimensionsStoreHDHT . class ) ; public static final int CACHE_SIZE = 50000 ; public static final int DEFAULT_KEEP_ALIVE_TIME = 20 ; @ Min ( 1 ) private int keepAliveTime = DimensionsStoreHDHT . DEFAULT_KEEP_ALIVE_TIME ; private int cacheSize = DimensionsStoreHDHT . CACHE_SIZE ; @ VisibleForTesting public transient LoadingCache < EventKey , AggregateEvent > cache = null ; public DimensionsStoreHDHT ( ) { } protected abstract int getAggregatorID ( String aggregatorName ) { } protected abstract DimensionsStaticAggregator getAggregator ( int aggregatorID ) { } protected abstract FieldsDescriptor getKeyDescriptor ( int schemaID , int dimensionsDescriptorID ) { } protected abstract FieldsDescriptor getValueDescriptor ( int schemaID , int dimensionsDescriptorID , int aggregatorID ) { } protected abstract long getBucketForSchema ( int schemaID ) { } protected long getBucketForSchema ( EventKey eventKey ) { } protected byte [ ] getKeyBytesGAE ( AggregateEvent gae ) { } public byte [ ] getEventKeyBytesGAE ( EventKey eventKey ) { } public byte [ ] getValueBytesGAE ( AggregateEvent event ) { } public AggregateEvent fromKeyValueGAE ( Slice key , byte [ ] aggregate ) { } @ Override protected void processEvent ( AggregateEvent gae ) { } protected void processGenericEvent ( AggregateEvent gae ) { DimensionsStaticAggregator aggregator = getAggregator ( gae . getAggregatorID ( ) ) ; AggregateEvent aggregate = null ; try { aggregate = cache . get ( gae . getEventKey ( ) ) ; } catch ( ExecutionException ex ) { throw new RuntimeException ( ex ) ; } if ( aggregate . isEmpty ( ) ) { cache . put ( gae . getEventKey ( ) , gae ) ; } else { <START_BUG> aggregator . aggregate ( aggregate , gae ) ; <END_BUG> } } public abstract int getPartitionGAE ( AggregateEvent inputEvent ) { } public void putGAE ( AggregateEvent gae ) { } @ Override public void setup ( OperatorContext context ) { } @ Override public void teardown ( ) { } @ Override public void beginWindow ( long windowId ) { } @ Override public void endWindow ( ) { } @ Override public HDHTCodec < AggregateEvent > getCodec ( ) { } public int getKeepAliveTime ( ) { } public void setKeepAliveTime ( int keepAliveTime ) { } public int getCacheSize ( ) { } public void setCacheSize ( int cacheSize ) { } class GenericAggregateEventCodec extends KryoSerializableStreamCodec < AggregateEvent > implements HDHTCodec < AggregateEvent > { private static final long serialVersionUID = 201503170256L ; public GenericAggregateEventCodec ( ) { } @ Override public byte [ ] getKeyBytes ( AggregateEvent gae ) { } @ Override public byte [ ] getValueBytes ( AggregateEvent gae ) { } @ Override public AggregateEvent fromKeyValue ( Slice key , byte [ ] value ) { } @ Override public int getPartition ( AggregateEvent gae ) { } } class HDHTCacheRemoval implements RemovalListener < EventKey , AggregateEvent > { public HDHTCacheRemoval ( ) { } @ Override public void onRemoval ( RemovalNotification < EventKey , AggregateEvent > notification ) { } } class HDHTCacheLoader extends CacheLoader < EventKey , AggregateEvent > { public HDHTCacheLoader ( ) { } @ Override public AggregateEvent load ( EventKey eventKey ) { } } }

Fix:
aggregator . aggregateAggs ( aggregate , gae ) ;