com.tc.object.ObjectID

Terracotta Project Issue Tracker | Chris Dennis | 7 years ago
  1. 0

    The getter TC generates for a final field currently looks something like this (simplified): public Object getField() { synchronized (__tc_managed()) { if (field == null) { resolveReference("fieldName"); } } return field } For a final field I think this can be changed to something like this: public Object getField() { if (field == null) { synchronized (__tc_managed()) { resolveReference("fieldName"); } } return field } The field is final - so if you see a non null value then it must be the correct one. This has been seen to be a bottleneck in some of our performance tests... PerAppThread-8" prio=10 tid=0x81c5c800 nid=0x69ca waiting for monitor entry [0x7df5c000] java.lang.Thread.State: BLOCKED (on object monitor) at org.terracotta.cache.serialization.ObjectStreamClassSerializer.__tc_getmappings(ObjectStreamClassSerializer.java) - waiting to lock <0x8a098750> (a com.tc.object.ObjectID) at org.terracotta.cache.serialization.ObjectStreamClassSerializer.getMappingFor(ObjectStreamClassSerializer.java:29) at org.terracotta.cache.serialization.DsoSerializationStrategy$OOS.writeClassDescriptor(DsoSerializationStrategy.java:85) at java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1245) at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at org.terracotta.cache.serialization.DsoSerializationStrategy.writeStringKey(DsoSerializationStrategy.java:54) at org.terracotta.cache.serialization.DsoSerializationStrategy.generateStringKeyFor(DsoSerializationStrategy.java:46) at org.terracotta.modules.ehcache.store.ClusteredStore.generateStringKeyFor(ClusteredStore.java:236) at org.terracotta.modules.ehcache.store.ClusteredStore.get(ClusteredStore.java:113)

    Terracotta Project Issue Tracker | 7 years ago | Chris Dennis
    com.tc.object.ObjectID

    Root Cause Analysis

    1. com.tc.object.ObjectID

      No message provided

      at org.terracotta.cache.serialization.ObjectStreamClassSerializer.getMappingFor()
    2. org.terracotta.cache
      DsoSerializationStrategy$OOS.writeClassDescriptor
      1. org.terracotta.cache.serialization.ObjectStreamClassSerializer.getMappingFor(ObjectStreamClassSerializer.java:29)
      2. org.terracotta.cache.serialization.DsoSerializationStrategy$OOS.writeClassDescriptor(DsoSerializationStrategy.java:85)
      2 frames
    3. Java RT
      ObjectOutputStream.writeObject
      1. java.io.ObjectOutputStream.writeNonProxyDesc(ObjectOutputStream.java:1245)
      2. java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:1203)
      3. java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1387)
      4. java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1150)
      5. java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
      5 frames
    4. org.terracotta.cache
      DsoSerializationStrategy.generateStringKeyFor
      1. org.terracotta.cache.serialization.DsoSerializationStrategy.writeStringKey(DsoSerializationStrategy.java:54)
      2. org.terracotta.cache.serialization.DsoSerializationStrategy.generateStringKeyFor(DsoSerializationStrategy.java:46)
      2 frames
    5. org.terracotta.modules
      ClusteredStore.get
      1. org.terracotta.modules.ehcache.store.ClusteredStore.generateStringKeyFor(ClusteredStore.java:236)
      2. org.terracotta.modules.ehcache.store.ClusteredStore.get(ClusteredStore.java:113)
      2 frames