Tuesday, April 30, 2013

ATG Selective Cache Invalidation

ATG Selective Cache Invalidation

Oracle has introduced Selective Cache Invalidation to improve deployment times and I quote "You can optimize a site’s performance after a switch deployment by enabling selective cache invalidation on target repositories. A repository that is thus configured invalidates its item caches selectively during deployment, rather than invalidating the contents of those caches entirely.".  I have seen quite a few queries on Oracle ATG community about how to validate if for real selective cache invalidation works and did not find much help. After some investigative work, I was able to validate if configuration is accurate and successfully was able to verify that Selective Cache Invalidation indeed occurred when assets were published to targets through BCC/CA.

Below is the outline of the steps:
  1.  enable Selective Cache Invalidation on Target Repository for eg: ProductCatalog as per documentation at: http://docs.oracle.com/cd/E24152_01/Platform.10-1/ATGContentAdminProgGuide/html/s1104selectivecacheinvalidation01.html.  
  2. Using Dynamo Admin page enable "debugSCIEvent" on component Deployment Agent( http://localhost:8080/dyn/admin/nucleus//atg/epub/DeploymentAgent/
  3. Turn debug on Target Repository in Production Server for eg: Product Catalog: http://localhost:8080/dyn/admin/nucleus//atg/registry/ContentRepositories/ProductCatalog/
  4. Load two products one you will likely modify it in BCC by visiting product detail pages on the store front
  5. Capture Cache statistics 
  6. Now create a Merchandising Project in CA and modify a product. Limit to one product to first get a feel for the kind of logs you should be looking for. 
  7. After the Production Deployment is completed in BCC and Project is closed in BCC, try looking for logs similar to the following 


 2013-04-17 05:48:27,746 INFO [/atg/epub/DeploymentAgent] DEBUG prepareSwitch(): sciEvents=        
 2013-04-17 05:48:27,746 INFO [/atg/epub/DeploymentAgent] DEBUG [  
  mRepositoryPath=/atg/commerce/catalog/ProductCatalog,mFullInvalidation=false,mFullInvalidationItemDescriptorsSet=null,mItemDescriptorToIdsMap=  
  (  
  Desc=productTranslation ids=224256  
  )  
 ]  
 2013-04-17 05:48:27,746 INFO [/atg/epub/DeploymentAgent] DEBUG SCIAgentService.udpateEvents(): sciEvents=        
 2013-04-17 05:48:27,746 INFO [/atg/epub/DeploymentAgent] DEBUG [  
  mRepositoryPath=/atg/commerce/catalog/ProductCatalog,mFullInvalidation=false,mFullInvalidationItemDescriptorsSet=null,mItemDescriptorToIdsMap=  
  (  
  Desc=productTranslation ids=224256  
  )  
 ]  
 2013-04-17 05:48:27,746 INFO [/atg/epub/DeploymentAgent] DEBUG prepareSwitch(): cacheWarmingEnabled=true SCIEnabled=true sciEvents!=null        
 2013-04-17 05:48:27,747 INFO [/atg/commerce/catalog/ProductCatalog] DEBUG got DS event: /atg/dynamo/service/jdbc/SwitchingDataSource PREPARE DataSourceA        


Now that you have validated your configuration, Good luck with configuring an optimal value for "threshold" property on Component: /atg/epub/sci/ServerSCIThresholdController on the Asset Management Server.