3 Replies Latest reply on Nov 10, 2005 11:50 AM by sreepraveen_2000

    collection cache does not work

    sreepraveen_2000

      We are using jboss treecache with hibernate 3.0, It is used as a distributed cache for different containers on same box. All these containers are running different tomcat instances. But in the below run it was run in REPL_SYNC mode with no other container up, so not to worry about the distributed cache. I have turned the logging level of caching to ALL.
      I have couple of question here. If you look at the logs below you can see

      1) [11-04-05 08:48:37](I)<172>[TransactionManagerLookupFactory]{10} No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
      [11-04-05 08:48:38](W)<209>[TreeCache ]{10} No transaction manager lookup class has been defined. Transactions cannot be used.
      I am using hibernate will it take care of my transactions, or is there something I need to worry.
      2) [11-04-05 08:48:54](Fst)<331>[PessimisticLockInterceptor ]{10} failed to find or create child, is it something to worry about and what does that mean.
      3) I have a set and for the very first time it is a cache miss and it issues a query and gets the collection and caches all the elements in collection. When it does a cache lookup for the same collection its again cache miss. Can you tell me why this is happening (might be because of 2), logs with lot of details are pasted here.

      It would be great if i can get some help.

      Treecache version
      Version: 1.2.4
      CVS: $Id: Version.java,v 1.5.2.1 2005/10/05 03:49:00 bwang Exp $

      Hibernate Mapping File
      <hibernate-mapping default-lazy="false">
       <class name="com.xxxxxxx.facts.IComplement"
       table="I_COMPLEMENT">
       <cache usage="transactional"/>
       <id name="UUID"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType"
       column="UUID">
       <generator class="assigned" />
       </id>
       <joined-subclass
      name="com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice"
       table="TELEMETRY_DEVICE">
       <key column="TELEMETRY_DEVICE_UUID" />
       <property name="locationUUID"
       column="LOCATION_UUID" insert="false" update="false"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType" />
       <many-to-one name="location"
      class="com.xxxxxxx.devices.model.telemetrydevice.Location"
       column="LOCATION_UUID" cascade="all" />
       <property name="originalProvisionDate"
       column="ORIGINAL_PROVISION_DATE" />
       <property name="onboardTelemetryDeviceAgentUUID"
       column="ONBOARD_AGENT_UUID"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType" />
       <property name="template" column="IS_TEMPLATE" />
       <property name="templateUUID"
       column="TEMPLATE_UUID"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType" />
       <property name="deviceID" column="DEVICE_ID"
       insert="false" update="false" />
       <set name="transducers" inverse="true">
       <cache usage="transactional"/>
       <key column="TELEMETRY_DEVICE_UUID" />
       <one-to-many
      class="com.xxxxxxx.devices.model.telemetrydevice.Transducer" />
       </set>
       <set name="communicationChannels" inverse="true"
       cascade="delete">
       <cache usage="transactional"/>
       <key column="TELEMETRY_DEVICE_UUID" />
       <one-to-many
      class="com.xxxxxxx.devices.model.telemetrydevice.communication.CommunicationChannel" />
       </set>
       </joined-subclass>
       <joined-subclass
      name="com.xxxxxxx.devices.model.telemetrydevice.Transducer"
       table="TRANSDUCER">
       <key column="TRANSDUCER_UUID" />
       <property name="onboardAgentUUID"
       column="ONBOARD_AGENT_UUID"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType" />
       <property name="description" column="DESCRIPTION" />
       <property name="address" column="ADDRESS" />
       <property name="logical" column="IS_LOGICAL" />
       <property name="visible" column="IS_VISIBLE" />
       <property name="actuator" column="IS_ACTUATOR" />
       <property name="template" column="IS_TEMPLATE" />
       <property name="enabled" column="IS_ENABLED" />
       <property name="telemetryDeviceUUID"
       column="TELEMETRY_DEVICE_UUID" insert="false" update="false"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType" />
       <property name="templateUUID" column="TEMPLATE_UUID"
      type="com.xxxxxxx.services.util.hibernate.UUIDVarcharType" />
       <many-to-one name="telemetryDevice"
      class="com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice"
       column="TELEMETRY_DEVICE_UUID" insert="false" update="false" />
       </joined-subclass>
       </joined-subclass>
       </class>
      </hibernate-mapping>
      


      LOGS
      [11-04-05 08:48:38](F)<196>[PropertyConfigurator ]{10} setting attribute IsolationLevel to REPEATABLE_READ
      [11-04-05 08:48:38](F)<197>[PropertyConfigurator ]{10} setting attribute CacheMode to REPL_SYNC
      [11-04-05 08:48:38](F)<198>[PropertyConfigurator ]{10} setting attribute ClusterName to XXXXXXX
      [11-04-05 08:48:38](F)<199>[PropertyConfigurator ]{10} Invoking setter method: public void org.jboss.cache.TreeCache.setClusterConfig(org.w3c.dom.Element) with parameter "[config: null]" of type class org.apache.xerces.dom.DeferredElementImpl
      [11-04-05 08:48:38](I)<200>[TreeCache ]{10} setting cluster properties from xml to: TCP(bind_addr=10.10.14.100;start_port=11000):TCPPING(down_thread=true;initial_hosts=10.10.14.100[11000];num_initial_members=1;port_range=10;timeout=3000;up_thread=true):FD(down_thread=true;max_tries=5;shun=true;timeout=2500;up_thread=true):VERIFY_SUSPECT(down_thread=false;timeout=1500;up_thread=false):pbcast.NAKACK(down_thread=true;gc_lag=100;retransmit_timeout=3000;up_thread=true):MERGE2(max_interval=20000;min_interval=10000):pbcast.STABLE(desired_avg_gossip=20000;down_thread=false;up_thread=false):pbcast.GMS(down_thread=true;join_retry_timeout=2000;join_timeout=5000;print_local_addr=false;shun=false;up_thread=true):pbcast.STATE_TRANSFER(down_thread=true;up_thread=true)
      [11-04-05 08:48:38](F)<201>[PropertyConfigurator ]{10} Invoking setter method: public void org.jboss.cache.TreeCache.setFetchStateOnStartup(boolean) with parameter "true" of type class java.lang.Boolean
      [11-04-05 08:48:38](F)<202>[PropertyConfigurator ]{10} Invoking setter method: public void org.jboss.cache.TreeCache.setInitialStateRetrievalTimeout(long) with parameter "20000" of type class java.lang.Long
      [11-04-05 08:48:38](F)<203>[PropertyConfigurator ]{10} Invoking setter method: public void org.jboss.cache.TreeCache.setSyncReplTimeout(long) with parameter "10000" of type class java.lang.Long
      [11-04-05 08:48:38](F)<204>[PropertyConfigurator ]{10} Invoking setter method: public void org.jboss.cache.TreeCache.setLockAcquisitionTimeout(long) with parameter "15000" of type class java.lang.Long
      [11-04-05 08:48:38](F)<205>[PropertyConfigurator ]{10} setting attribute EvictionPolicyClass to org.jboss.cache.eviction.LRUPolicy
      [11-04-05 08:48:38](F)<206>[PropertyConfigurator ]{10} Invoking setter method: public void org.jboss.cache.TreeCache.setEvictionPolicyConfig(org.w3c.dom.Element) with parameter "[config: null]" of type class org.apache.xerces.dom.DeferredElementImpl
      [11-04-05 08:48:38](I)<207>[TreeCache ]{10} setEvictionPolicyConfig(): [config: null]
      [11-04-05 08:48:38](I)<208>[TransactionManagerLookupFactory]{10} No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
      [11-04-05 08:48:38](W)<209>[TreeCache ]{10} No transaction manager lookup class has been defined. Transactions cannot be used
      [11-04-05 08:48:38](I)<210>[TreeCache ]{10} interceptor chain is:
      class org.jboss.cache.interceptors.CallInterceptor
      class org.jboss.cache.interceptors.PessimisticLockInterceptor
      class org.jboss.cache.interceptors.UnlockInterceptor
      class org.jboss.cache.interceptors.ReplicationInterceptor
      [11-04-05 08:48:38](F)<211>[LRUPolicy ]{10} parseConfig: name -- /_default_ maxNodes -- 10000000 timeToLiveSeconds -- 0 maxAgeSeconds -- 0
      [11-04-05 08:48:38](F)<212>[LRUPolicy ]{10} parseConfig: name -- //com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers maxNodes -- 20000 timeToLiveSeconds -- 0 maxAgeSeconds -- 0
      [11-04-05 08:48:38](F)<213>[RegionManager ]{10} createRegion(): creating region for fqn- /_default_
      [11-04-05 08:48:38](F)<214>[RegionManager ]{10} getRegions(): size of region 0
      [11-04-05 08:48:38](F)<215>[RegionManager ]{10} createRegion(): creating region for fqn- //com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers
      [11-04-05 08:48:38](F)<216>[RegionManager ]{10} getRegions(): size of region 1
      [11-04-05 08:48:38](I)<217>[TreeCache ]{10} cache mode is REPL_SYNC
      [11-04-05 08:48:39](Fst)<218>[TreeCache ]{10} cache properties: TCP(bind_addr=10.10.14.100;start_port=11000):TCPPING(down_thread=true;initial_hosts=10.10.14.100[11000];num_initial_members=1;port_range=10;timeout=3000;up_thread=true):FD(down_thread=true;max_tries=5;shun=true;timeout=2500;up_thread=true):VERIFY_SUSPECT(down_thread=false;timeout=1500;up_thread=false):pbcast.NAKACK(down_thread=true;gc_lag=100;retransmit_timeout=3000;up_thread=true):MERGE2(max_interval=20000;min_interval=10000):pbcast.STABLE(desired_avg_gossip=20000;down_thread=false;up_thread=false):pbcast.GMS(down_thread=true;join_retry_timeout=2000;join_timeout=5000;print_local_addr=false;shun=false;up_thread=true):pbcast.STATE_TRANSFER(down_thread=true;up_thread=true)
      [11-04-05 08:48:39](I)<219>[ConnectionTable ]{11} server socket created on 10.10.14.100:11000
      [11-04-05 08:48:42](I)<220>[TreeCache ]{10} my local address is 10.10.14.100:11000
      [11-04-05 08:48:42](I)<221>[TreeCache ]{12} viewAccepted(): [10.10.14.100:11000|0] [10.10.14.100:11000]
      [11-04-05 08:48:43](I)<222>[TreeCache ]{10} state could not be retrieved (must be first member in group)
      [11-04-05 08:48:43](I)<223>[LRUPolicy ]{10} Starting eviction policy using the provider: org.jboss.cache.eviction.LRUPolicy
      [11-04-05 08:48:43](I)<224>[LRUPolicy ]{10} Starting a eviction timer with wake up interval of (secs) 60
      [11-04-05 08:48:43](I)<225>[TreeCache ]{12} new cache is null (may be first member in cluster)
      [11-04-05 08:48:43](I)<226>[TreeCache ]{10} Cache is started!!
      [11-04-05 08:48:43](F)<227>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.facts.IComplement usage strategy: transactional
      [11-04-05 08:48:43](F)<228>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.behavior.messages.alarm.AlarmActionState usage strategy: read-only
      [11-04-05 08:48:43](W)<229>[CacheFactory ]{10} read-only cache configured for mutable class: com.xxxxxxx.behavior.messages.alarm.AlarmActionState
      [11-04-05 08:48:43](F)<230>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.behavior.messages.alarm.Alarm usage strategy: transactional
      [11-04-05 08:48:43](F)<231>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.devices.model.telemetrydevice.Location usage strategy: transactional
      [11-04-05 08:48:43](F)<232>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.db.messagestore.PersistantMessage usage strategy: transactional
      [11-04-05 08:48:43](F)<233>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.behavior.messages.alarm.AlarmAction usage strategy: transactional
      [11-04-05 08:48:43](F)<234>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Phone usage strategy: transactional
      [11-04-05 08:48:43](F)<235>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.facts.simple.SimpleFact usage strategy: transactional
      [11-04-05 08:48:43](F)<236>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.model.messagemonitor.MessageMonitorActivity usage strategy: transactional
      [11-04-05 08:48:44](F)<237>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Contact usage strategy: transactional
      [11-04-05 08:48:44](F)<238>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.rateplan.RatePlan usage strategy: transactional
      [11-04-05 08:48:45](F)<239>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.devices.model.telemetrydevice.communication.CommunicationChannel usage strategy: transactional
      [11-04-05 08:48:45](F)<240>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Address usage strategy: transactional
      [11-04-05 08:48:45](F)<241>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Email usage strategy: transactional
      [11-04-05 08:48:45](F)<242>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.db.agentspec.AgentSpecInDB usage strategy: transactional
      [11-04-05 08:48:45](F)<243>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.rateplan.RatePlanComponent usage strategy: transactional
      [11-04-05 08:48:45](F)<244>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.model.messagemonitor.MessageMonitorSession usage strategy: transactional
      [11-04-05 08:48:45](F)<245>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.behavior.messages.alarm.AlarmSeverity usage strategy: read-only
      [11-04-05 08:48:45](W)<246>[CacheFactory ]{10} read-only cache configured for mutable class: com.xxxxxxx.behavior.messages.alarm.AlarmSeverity
      [11-04-05 08:48:46](F)<247>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.facts.simple.SimplePredicate usage strategy: read-only
      [11-04-05 08:48:46](W)<248>[CacheFactory ]{10} read-only cache configured for mutable class: com.xxxxxxx.facts.simple.SimplePredicate
      [11-04-05 08:48:46](F)<249>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.db.logo.Logo usage strategy: transactional
      [11-04-05 08:48:46](F)<250>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.behavior.messages.alarm.AlarmLifecycleState usage strategy: read-only
      [11-04-05 08:48:46](W)<251>[CacheFactory ]{10} read-only cache configured for mutable class: com.xxxxxxx.behavior.messages.alarm.AlarmLifecycleState
      [11-04-05 08:48:46](F)<252>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Contact.emailList usage strategy: transactional
      [11-04-05 08:48:46](F)<253>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Contact.phoneList usage strategy: transactional
      [11-04-05 08:48:46](F)<254>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.rateplan.RatePlan.ratePlanComponents usage strategy: transactional
      [11-04-05 08:48:46](F)<255>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.model.entities.entitygroup.businessentities.BusinessEntity.contacts usage strategy: transactional
      [11-04-05 08:48:46](F)<256>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.model.entities.entitygroup.businessentities.BusinessEntity.ratePlansProvidedToGroup usage strategy: transactional
      [11-04-05 08:48:46](F)<257>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.communicationChannels usage strategy: transactional
      [11-04-05 08:48:46](F)<258>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.services.contact.Contact.addressList usage strategy: transactional
      [11-04-05 08:48:46](F)<259>[CacheFactory ]{10} instantiating cache region: com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.transducers usage strategy: transactional
      
      
      [11-04-05 08:49:06](F)<378>[TransactionalCache ]{13} cache lookup: com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.transducers#B094583E8A104D5E9F3981390B3B7FE2
       [11-04-05 08:49:06](Fst)<379>[PessimisticLockInterceptor ]{13} failed to find or create child com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers of node /
      [11-04-05 08:49:06](Fst)<380>[TreeCache ]{13} _get("/com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers/com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.transducers#B094583E8A104D5E9F3981390B3B7FE2", item, "true")
      [11-04-05 08:49:06](F)<381>[TransactionalCache ]{13} cache miss
      Hibernate: select transducer0_.TELEMETRY_DEVICE_UUID as TELEMETRY10_1_, transducer0_.TRANSDUCER_UUID as TRANSDUCER1_1_, transducer0_.TRANSDUCER_UUID as UUID0_, transducer0_1_.NAME as NAME20_0_, transducer0_1_.PARENT_UUID as PARENT3_20_0_, transducer0_1_.IS_DELETED as IS4_20_0_, transducer0_.ONBOARD_AGENT_UUID as ONBOARD2_33_0_, transducer0_.DESCRIPTION as DESCRIPT3_33_0_, transducer0_.ADDRESS as ADDRESS33_0_, transducer0_.IS_LOGICAL as IS5_33_0_, transducer0_.IS_VISIBLE as IS6_33_0_, transducer0_.IS_ACTUATOR as IS7_33_0_, transducer0_.IS_TEMPLATE as IS8_33_0_, transducer0_.IS_ENABLED as IS9_33_0_, transducer0_.TELEMETRY_DEVICE_UUID as TELEMETRY10_33_0_, transducer0_.TEMPLATE_UUID as TEMPLATE11_33_0_, transducer0_4_.UNIT_LABEL as UNIT2_34_0_, transducer0_4_.MIN_VALUE as MIN3_34_0_, transducer0_4_.MAX_VALUE as MAX4_34_0_, transducer0_4_.STEP_VALUE as STEP5_34_0_, transducer0_4_.HIGH as HIGH34_0_, transducer0_4_.LOW as LOW34_0_, transducer0_4_.HIGH_HIGH as HIGH8_34_0_, transducer0_4_.LOW_LOW as LOW9_34_0_, (select get_handle(transducer0_1_.ENTITY_UUID) from dual) as formula2_0_, case when transducer0_4_.TRANSDUCER_UUID is not null then 15 when transducer0_5_.TRANSDUCER_UUID is not null then 16 when transducer0_6_.TRANSDUCER_UUID is not null then 17 when transducer0_7_.TRANSDUCER_UUID is not null then 18 when transducer0_8_.TRANSDUCER_UUID is not null then 19 when transducer0_.TRANSDUCER_UUID is not null then 14 end as clazz_0_ from TRANSDUCER transducer0_ inner join ENTITY transducer0_1_ on transducer0_.TRANSDUCER_UUID=transducer0_1_.ENTITY_UUID inner join I_SUBJECT transducer0_2_ on transducer0_.TRANSDUCER_UUID=transducer0_2_.UUID inner join I_COMPLEMENT transducer0_3_ on transducer0_.TRANSDUCER_UUID=transducer0_3_.UUID left outer join SIMPLE_TRANSDUCER transducer0_4_ on transducer0_.TRANSDUCER_UUID=transducer0_4_.TRANSDUCER_UUID left outer join BIT_TRANSDUCER transducer0_5_ on transducer0_.TRANSDUCER_UUID=transducer0_5_.TRANSDUCER_UUID left outer join LOCATION_TRANSDUCER transducer0_6_ on transducer0_.TRANSDUCER_UUID=transducer0_6_.TRANSDUCER_UUID left outer join STRING_TRANSDUCER transducer0_7_ on transducer0_.TRANSDUCER_UUID=transducer0_7_.TRANSDUCER_UUID left outer join IMAGE_TRANSDUCER transducer0_8_ on transducer0_.TRANSDUCER_UUID=transducer0_8_.TRANSDUCER_UUID where transducer0_.TELEMETRY_DEVICE_UUID=?
      [11-04-05 08:49:07](Fst)<382>[PessimisticLockInterceptor ]{13} failed to find or create child com/xxxxxxx/facts/IComplement of node /
      [11-04-05 08:49:07](Fst)<383>[TreeCache ]{13} _get("/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC", item, "true")
      [11-04-05 08:49:07](F)<384>[TransactionalCache ]{13} caching: com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:49:07](Fst)<385>[TreeNode ]{13} created child: fqn=/, child_name=com/xxxxxxx/facts/IComplement
      [11-04-05 08:49:07](Fst)<386>[LRUPolicy ]{13} nodeAdded(): fqn- /com/xxxxxxx/facts/IComplement
      [11-04-05 08:49:07](Fst)<387>[RegionManager ]{13} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement will use the global default region
      [11-04-05 08:49:07](Fst)<388>[TreeNode ]{13} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:49:07](Fst)<389>[TreeNode ]{13} acquired RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:49:07](Fst)<390>[TreeNode ]{13} created child: fqn=/com/xxxxxxx/facts/IComplement, child_name=com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:49:07](Fst)<391>[LRUPolicy ]{13} nodeAdded(): fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:49:07](Fst)<392>[RegionManager ]{13} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC will use the global default region
      [11-04-05 08:49:07](Fst)<393>[TreeNode ]{13} acquiring WL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:49:07](Fst)<394>[TreeNode ]{13} acquired WL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=write owner=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]
      [11-04-05 08:49:07](Fst)<395>[TreeCache ]{13} _put(null, "/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC", item, {_subclass=com.xxxxxxx.devices.model.telemetrydevice.SimpleTransducer, templateUUID=null, address=allocatedHeap, template=false, logical=false, telemetryDeviceUUID=B094583E8A104D5E9F3981390B3B7FE2, unitLabel=null, onboardAgentUUID=null, actuator=false, name=Allocated Heap, deleted=false, scaleStep=null, high=null, maxValue=null, _lazyPropertiesUnfetched=true, lowLow=null, highHigh=null, low=null, offboardAgentHandle=handle{Allocated_HeapAgent,EDF7871BD457475C9EDCF3286CF5134B,$env.offboardagentsserver.url}, minValue=null, enabled=true, description=This is a template for a basic analog sensor, visible=true, parentUUID=B094583E8A104D5E9F3981390B3B7FE2, telemetryDevice=B094583E8A104D5E9F3981390B3B7FE2})
      [11-04-05 08:49:07](Fst)<396>[LRUPolicy ]{13} nodeModified(): redirecting to node visited. fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:49:07](Fst)<397>[LRUPolicy ]{13} nodeVisited(): fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:49:07](Fst)<398>[RegionManager ]{13} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC will use the global default region
      [11-04-05 08:49:07](Fst)<399>[UnlockInterceptor ]{13} releasing lock for /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC: write owner=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]
      [11-04-05 08:49:07](Fst)<400>[UnlockInterceptor ]{13} releasing lock for /com/xxxxxxx/facts/IComplement: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:49:07](Fst)<401>[ReplicationInterceptor ]{13} invoking method _put([Ljava.lang.Object;@aab87f), members=[10.10.14.100:11000], mode=REPL_SYNC, exclude_self=true, timeout=10000
      [11-04-05 08:49:07](Fst)<402>[TreeCache ]{13} destination list is empty, discarding call
      [11-04-05 08:49:07](Fst)<403>[ReplicationInterceptor ]{13} responses=null
      [11-04-05 08:49:07](Fst)<404>[TreeNode ]{13} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:49:07](Fst)<405>[TreeNode ]{13} acquired RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:49:07](Fst)<406>[PessimisticLockInterceptor ]{13} failed to find or create child com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C of node /com/xxxxxxx/facts/IComplement
      [11-04-05 08:49:07](Fst)<407>[TreeCache ]{13} _get("/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C", item, "true")
      [11-04-05 08:49:07](Fst)<408>[UnlockInterceptor ]{13} releasing lock for /com/xxxxxxx/facts/IComplement: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:49:07](F)<409>[TransactionalCache ]{13} caching: com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C
      [11-04-05 08:49:07](Fst)<410>[TreeNode ]{13} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:49:07](Fst)<411>[TreeNode ]{13} acquired RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:49:07](Fst)<412>[TreeNode ]{13} created child: fqn=/com/xxxxxxx/facts/IComplement, child_name=com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C
      [11-04-05 08:49:07](Fst)<413>[LRUPolicy ]{13} nodeAdded(): fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C
      [11-04-05 08:49:07](Fst)<414>[RegionManager ]{13} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C will use the global default region
      [11-04-05 08:49:07](Fst)<415>[TreeNode ]{13} acquiring WL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:49:07](Fst)<416>[TreeNode ]{13} acquired WL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=write owner=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]
      [11-04-05 08:49:07](Fst)<417>[TreeCache ]{13} _put(null, "/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C", item, {_subclass=com.xxxxxxx.devices.model.telemetrydevice.SimpleTransducer, templateUUID=null, address=heapUsage, template=false, logical=false, telemetryDeviceUUID=B094583E8A104D5E9F3981390B3B7FE2, unitLabel=null, onboardAgentUUID=null, actuator=false, name=Used Heap, deleted=false, scaleStep=null, high=null, maxValue=null, _lazyPropertiesUnfetched=true, lowLow=null, highHigh=null, low=null, offboardAgentHandle=handle{Used_HeapAgent,B4B2E83AE8EF4C5F8702ADC9AC798FC6,$env.offboardagentsserver.url}, minValue=null, enabled=true, description=This is a template for a basic analog sensor, visible=true, parentUUID=B094583E8A104D5E9F3981390B3B7FE2, telemetryDevice=B094583E8A104D5E9F3981390B3B7FE2})
      [11-04-05 08:49:07](Fst)<418>[LRUPolicy ]{13} nodeModified(): redirecting to node visited. fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C
      [11-04-05 08:49:07](Fst)<419>[LRUPolicy ]{13} nodeVisited(): fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C
      [11-04-05 08:49:07](Fst)<420>[RegionManager ]{13} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C will use the global default region
      [11-04-05 08:49:07](Fst)<421>[UnlockInterceptor ]{13} releasing lock for /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C: write owner=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]
      [11-04-05 08:49:07](Fst)<422>[UnlockInterceptor ]{13} releasing lock for /com/xxxxxxx/facts/IComplement: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:49:07](Fst)<423>[ReplicationInterceptor ]{13} invoking method _put([Ljava.lang.Object;@36bc0a), members=[10.10.14.100:11000], mode=REPL_SYNC, exclude_self=true, timeout=10000
      [11-04-05 08:49:07](Fst)<424>[TreeCache ]{13} destination list is empty, discarding call
      [11-04-05 08:49:07](Fst)<425>[ReplicationInterceptor ]{13} responses=null
      [11-04-05 08:55:15](F)<8813>[TransactionalCache ]{14} cache lookup: com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.transducers#B094583E8A104D5E9F3981390B3B7FE2
      [11-04-05 08:55:15](Fst)<8814>[TreeNode ]{14} acquiring RL: fqn=/com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:55:15](Fst)<8815>[TreeNode ]{14} acquired RL: fqn=/com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:15](Fst)<8816>[PessimisticLockInterceptor ]{14} failed to find or create child com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.transducers#B094583E8A104D5E9F3981390B3B7FE2 of node /com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers
      [11-04-05 08:55:15](Fst)<8817>[TreeCache ]{14} _get("/com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers/com.xxxxxxx.devices.model.telemetrydevice.TelemetryDevice.transducers#B094583E8A104D5E9F3981390B3B7FE2", item, "true")
      [11-04-05 08:55:15](Fst)<8818>[UnlockInterceptor ]{14} releasing lock for /com/xxxxxxx/devices/model/telemetrydevice/TelemetryDevice/transducers: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:15](F)<8819>[TransactionalCache ]{14} cache miss
      Hibernate: select transducer0_.TELEMETRY_DEVICE_UUID as TELEMETRY10_1_, transducer0_.TRANSDUCER_UUID as TRANSDUCER1_1_, transducer0_.TRANSDUCER_UUID as UUID0_, transducer0_1_.NAME as NAME20_0_, transducer0_1_.PARENT_UUID as PARENT3_20_0_, transducer0_1_.IS_DELETED as IS4_20_0_, transducer0_.ONBOARD_AGENT_UUID as ONBOARD2_33_0_, transducer0_.DESCRIPTION as DESCRIPT3_33_0_, transducer0_.ADDRESS as ADDRESS33_0_, transducer0_.IS_LOGICAL as IS5_33_0_, transducer0_.IS_VISIBLE as IS6_33_0_, transducer0_.IS_ACTUATOR as IS7_33_0_, transducer0_.IS_TEMPLATE as IS8_33_0_, transducer0_.IS_ENABLED as IS9_33_0_, transducer0_.TELEMETRY_DEVICE_UUID as TELEMETRY10_33_0_, transducer0_.TEMPLATE_UUID as TEMPLATE11_33_0_, transducer0_4_.UNIT_LABEL as UNIT2_34_0_, transducer0_4_.MIN_VALUE as MIN3_34_0_, transducer0_4_.MAX_VALUE as MAX4_34_0_, transducer0_4_.STEP_VALUE as STEP5_34_0_, transducer0_4_.HIGH as HIGH34_0_, transducer0_4_.LOW as LOW34_0_, transducer0_4_.HIGH_HIGH as HIGH8_34_0_, transducer0_4_.LOW_LOW as LOW9_34_0_, (select get_handle(transducer0_1_.ENTITY_UUID) from dual) as formula2_0_, case when transducer0_4_.TRANSDUCER_UUID is not null then 15 when transducer0_5_.TRANSDUCER_UUID is not null then 16 when transducer0_6_.TRANSDUCER_UUID is not null then 17 when transducer0_7_.TRANSDUCER_UUID is not null then 18 when transducer0_8_.TRANSDUCER_UUID is not null then 19 when transducer0_.TRANSDUCER_UUID is not null then 14 end as clazz_0_ from TRANSDUCER transducer0_ inner join ENTITY transducer0_1_ on transducer0_.TRANSDUCER_UUID=transducer0_1_.ENTITY_UUID inner join I_SUBJECT transducer0_2_ on transducer0_.TRANSDUCER_UUID=transducer0_2_.UUID inner join I_COMPLEMENT transducer0_3_ on transducer0_.TRANSDUCER_UUID=transducer0_3_.UUID left outer join SIMPLE_TRANSDUCER transducer0_4_ on transducer0_.TRANSDUCER_UUID=transducer0_4_.TRANSDUCER_UUID left outer join BIT_TRANSDUCER transducer0_5_ on transducer0_.TRANSDUCER_UUID=transducer0_5_.TRANSDUCER_UUID left outer join LOCATION_TRANSDUCER transducer0_6_ on transducer0_.TRANSDUCER_UUID=transducer0_6_.TRANSDUCER_UUID left outer join STRING_TRANSDUCER transducer0_7_ on transducer0_.TRANSDUCER_UUID=transducer0_7_.TRANSDUCER_UUID left outer join IMAGE_TRANSDUCER transducer0_8_ on transducer0_.TRANSDUCER_UUID=transducer0_8_.TRANSDUCER_UUID where transducer0_.TELEMETRY_DEVICE_UUID=?
      [11-04-05 08:55:16](Fst)<8820>[TreeNode ]{14} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:55:16](Fst)<8821>[TreeNode ]{14} acquired RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](Fst)<8822>[TreeNode ]{14} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:55:16](Fst)<8823>[TreeNode ]{14} acquired RL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](Fst)<8824>[TreeCache ]{14} _get("/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC", item, "true")
      [11-04-05 08:55:16](Fst)<8825>[LRUPolicy ]{14} nodeVisited(): fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:55:16](Fst)<8826>[RegionManager ]{14} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC will use the global default region
      [11-04-05 08:55:16](Fst)<8827>[UnlockInterceptor ]{14} releasing lock for /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](Fst)<8828>[UnlockInterceptor ]{14} releasing lock for /com/xxxxxxx/facts/IComplement: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](F)<8829>[TransactionalCache ]{14} item already cached: com.xxxxxxx.facts.IComplement#BECFF8933F834BC6964D976BA74E7FFC
      [11-04-05 08:55:16](Fst)<8830>[TreeNode ]{14} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:55:16](Fst)<8831>[TreeNode ]{14} acquired RL: fqn=/com/xxxxxxx/facts/IComplement, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](Fst)<8832>[TreeNode ]{14} acquiring RL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=<unlocked>
      [11-04-05 08:55:16](Fst)<8833>[TreeNode ]{14} acquired RL: fqn=/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C, caller=Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main], lock=read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](Fst)<8834>[TreeCache ]{14} _get("/com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C", item, "true")
      [11-04-05 08:55:16](Fst)<8835>[LRUPolicy ]{14} nodeVisited(): fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C
      [11-04-05 08:55:16](Fst)<8836>[RegionManager ]{14} getRegion(): not user-specified region found for this fqn- /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C will use the global default region
      [11-04-05 08:55:16](Fst)<8837>[UnlockInterceptor ]{14} releasing lock for /com/xxxxxxx/facts/IComplement/com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](Fst)<8838>[UnlockInterceptor ]{14} releasing lock for /com/xxxxxxx/facts/IComplement: read owners=[Thread[Container 3C0708C38C5B4E238191D84D6E24633B,5,main]]
      [11-04-05 08:55:16](F)<8839>[TransactionalCache ]{14} item already cached: com.xxxxxxx.facts.IComplement#4F7B4FFDD3C9407C8D4CC3C0A08E1A0C



      TreeCache.XML FIle

      <?xml version='1.0' encoding='UTF-8' ?>
      <server>
       <classpath codebase="./lib" archives="jboss-cache.jar, jgroups.jar" />
       <mbean code="org.jboss.cache.TreeCache" name="jboss.cache:service=TreeCache">
       <depends>jboss:service=Naming</depends>
       <depends>jboss:service=TransactionManager</depends>
       <attribute name="IsolationLevel">REPEATABLE_READ</attribute>
       <attribute name="CacheMode">REPL_SYNC</attribute>
       <attribute name="ClusterName">NAMEXXX</attribute>
       <attribute name="ClusterConfig">
       <config>
       <TCP start_port="11000" bind_addr="10.10.14.100" />
       <TCPPING initial_hosts="10.10.14.100 [11000]" port_range="10" timeout="3000" num_initial_members="1" up_thread="true" down_thread="true" />
       <FD shun="true" up_thread="true" down_thread="true" timeout="2500" max_tries="5" />
       <VERIFY_SUSPECT timeout="1500" up_thread="false" down_thread="false" />
       <pbcast.NAKACK gc_lag="100" retransmit_timeout="3000" up_thread="true" down_thread="true" />
       <MERGE2 min_interval="10000" max_interval="20000" />
       <pbcast.STABLE desired_avg_gossip="20000" up_thread="false" down_thread="false" />
       <pbcast.GMS join_timeout="5000" join_retry_timeout="2000" shun="false" print_local_addr="false" down_thread="true" up_thread="true" />
       <pbcast.STATE_TRANSFER up_thread="true" down_thread="true" />
       </config>
       </attribute>
       <attribute name="FetchStateOnStartup">true</attribute>
       <attribute name="MaxCapacity">20000</attribute>
       <attribute name="InitialStateRetrievalTimeout">20000</attribute>
       <attribute name="SyncReplTimeout">10000</attribute>
       <attribute name="LockAcquisitionTimeout">15000</attribute>
       <attribute name="LockLeaseTimeout">60000</attribute>
       </mbean>
      </server>
      


        • 1. Re: collection cache does not work
          sreepraveen_2000

          can some one look into this issue please

          • 2. Re: collection cache does not work
            manik

            Hi, I will have a look when I have a moment.

            I must advise though, if this is an urgent case on a production system, I'd recommend buying a support contract and our support guys would get on the case right away.

            [http://www.jboss.com/services/index]

            • 3. Re: collection cache does not work
              sreepraveen_2000

              Thank you surtani for the buying of support idea.
              I figured out what the problem was and posting it so that it will be helpful to others.
              regarding the 1 and 2 question i dont know why that happens and ever i am not worried about them.
              but regarding the 3 question where it does not cache the collections the problem was in my bean i declared the collections as list and in the mapping file it was defined as set, and i tried converting the set to list and list to set in getters and setters which created problems.
              like eg.

              protected List list;
              public void setXXX(set yyy)
              {
               //i am iterating through the set and adding it to the
               // list
              }
              
              and similarly the get method.


              I changed the variable to Set insted of List and it worked. I read somewhere saying the reference to the collection is lost, but i dont know how that reference gets lost when its not doing the deep copy.