osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GitHub] activemq-artemis pull request #2328: ARTEMIS-2095 - Typed Properties ThreadS...


Github user franz1981 commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2328#discussion_r220179027
  
    --- Diff: artemis-commons/src/main/java/org/apache/activemq/artemis/utils/collections/TypedProperties.java ---
    @@ -68,22 +73,23 @@ public TypedProperties() {
         *  Return the number of properties
         * */
        public int size() {
    -      return properties.size();
    +      return withReadLock(() -> properties.size());
        }
     
        public int getMemoryOffset() {
           // The estimate is basically the encode size + 2 object references for each entry in the map
           // Note we don't include the attributes or anything else since they already included in the memory estimate
           // of the ServerMessage
     
    -      return properties == null ? 0 : size + 2 * DataConstants.SIZE_INT * properties.size();
    +      return properties == null ? 0 : encodeSize + 2 * DataConstants.SIZE_INT * size();
        }
     
        public TypedProperties(final TypedProperties other) {
    -      synchronized (other) {
    +      other.withReadLock(() -> {
              properties = other.properties == null ? null : new HashMap<>(other.properties);
    -         size = other.size;
    -      }
    +         ENCODE_SIZE_FIELD_UPDATER.set(this, other.encodeSize);
    --- End diff --
    
    I would use lazySet here, given that we're single writer here...(we are?)


---