HOW-TO Clear Liferay Cache

 

I was learning on how to implement the  export and import functionality on Liferay, initially I thought it to be rather a tedious job but thanks to Liferay API/Framework which made my job easier with Liferay Portlet Data Handlers thanks to Jorge Ferrer who gave me an insight to the API/Framework and how to use the same. All I was required to do is just create a class that extends from BasePortletDataHandler and have it configured via the liferay-portlet.xml

But this activity lead to an interesting learning, initially when I implemented this I saw that data was getting exported/imported without any errors but then I see that its not refreshing the UI immediately after the import. This kind of annoyed me for long time .. thanks to Raymond Auge for is timely insight that we need to clear the cache for the same to be refreshed.. so started my next task on hunting the class which can do the job..

The initial analysis started with me doing the manual task of clearing the caches via the Portal Control Panel using the Server Administration --> Resources (tab) --> Actions panel where we have the action buttons that will clear the cache held by Database, Virtual Machine both local and clustered...  when i did this sequence of actions after my Import, i see the data getting refreshed instantly..  so whats next ? finding out the class that did these jobs, when back tracing from the Server Admin page i landed up in the class EditServerAction, there I got the following three sweet little methods that can do the job for me,

  • CacheRegistryUtil.clear()  -  to clear all the Database caches
  • MultiVMPoolUtil.clear()    - clearing cache across JVM clusters
  • WebCachePoolUtil.clear() - clearing cache in Single VM

All left with me post this findings is that i need to call the required or all methods post my successful import of the data to clear the required caches...

Blogs
I'm having a problem with cache, anytime i add something new to database, for example when i create a new organization from the UI, it is not showing in the UI until i restart the whole server a couple of times. I've tried doing the sequence that you mentioned, the UI doesn't reflect the change. What can i do?