Please create jars in the branch using the attached patch, and test it out
in the environment where this issue occurred.
Index:
javax.cache/src/main/java/org/wso2/carbon/caching/impl/DataHolder.java
===================================================================
--- javax.cache/src/main/java/org/wso2/carbon/caching/impl/DataHolder.java
(revision
180096)
+++ javax.cache/src/main/java/org/wso2/carbon/caching/impl/DataHolder.java
(working
copy)
@@ -49,6 +49,8 @@
try {
if(distributedMapProvider != null){
cachingProvider.switchToDistributedMode();
+ } else {
+ cachingProvider.switchToLocalMode();
}
} catch (Exception e) {
log.error("Cannot setDistributedMapProvider", e);
Index:
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CacheManagerFactoryImpl.java
===================================================================
---
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CacheManagerFactoryImpl.java
(revision
180096)
+++
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CacheManagerFactoryImpl.java
(working
copy)
@@ -72,6 +72,14 @@
}
}
+ void switchToLocalMode(){
+ for (Map<String, CacheManager> cacheManagerMap :
globalCacheManagerMap.values()) {
+ for (CacheManager cacheManager : cacheManagerMap.values()) {
+ ((CarbonCacheManager) cacheManager).switchToLocalMode();
+ }
+ }
+ }
+
@Override
public CacheManager getCacheManager(String cacheManagerName) {
String tenantDomain = Util.getTenantDomain();
Index:
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java
===================================================================
---
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java
(revision
180096)
+++
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CarbonCacheManager.java
(working
copy)
@@ -131,6 +131,12 @@
}
}
+ void switchToLocalMode(){
+ for (Cache<?, ?> cache : caches.values()) {
+ ((CacheImpl) cache).switchToLocalMode();
+ }
+ }
+
@SuppressWarnings("unchecked")
final <K, V> Cache<K, V> getExistingCache(String cacheName) {
touch();
Index: javax.cache/src/main/java/org/wso2/carbon/caching/impl/CacheImpl.java
===================================================================
--- javax.cache/src/main/java/org/wso2/carbon/caching/impl/CacheImpl.java
(revision
180202)
+++ javax.cache/src/main/java/org/wso2/carbon/caching/impl/CacheImpl.java
(working
copy)
@@ -150,6 +150,15 @@
}
}
+ void switchToLocalMode() {
+ DistributedMapProvider distributedMapProvider =
+ DataHolder.getInstance().getDistributedMapProvider();
+ if (isLocalCache(cacheName, distributedMapProvider)) {
+ return;
+ }
+ isLocalCache = true;
+ }
+
private String getMapName(String cacheName, CacheManager cacheManager)
{
return "$cache.$domain[" + ownerTenantDomain + "]" +
cacheManager.getName() + "#" + cacheName;
Index:
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CachingProviderImpl.java
===================================================================
---
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CachingProviderImpl.java
(revision
180096)
+++
javax.cache/src/main/java/org/wso2/carbon/caching/impl/CachingProviderImpl.java
(working
copy)
@@ -35,6 +35,10 @@
cacheManagerFactory.switchToDistributedMode();
}
+ void switchToLocalMode(){
+ cacheManagerFactory.switchToLocalMode();
+ }
+
@Override
public CacheManagerFactory getCacheManagerFactory() {
return cacheManagerFactory;
Index:
org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/clustering/hazelcast/HazelcastClusteringAgent.java
===================================================================
---
org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/clustering/hazelcast/HazelcastClusteringAgent.java
(revision
181419)
+++
org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/clustering/hazelcast/HazelcastClusteringAgent.java
(working
copy)
@@ -44,6 +44,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
import org.wso2.carbon.caching.impl.DistributedMapProvider;
import org.wso2.carbon.core.ServerStatus;
import org.wso2.carbon.core.clustering.api.CarbonCluster;
@@ -107,6 +108,7 @@
new HashMap<String, Map<String, GroupManagementAgent>>();
private boolean clusterManagementMode;
private String primaryDomain;
+ private ServiceRegistration<DistributedMapProvider>
distributedMapProviderServiceRegistration;
public void init() throws ClusteringFault {
MemberUtils.init(parameters, configurationContext);
@@ -220,11 +222,11 @@
}
MemberUtils.getMembersMap(primaryHazelcastInstance,
primaryDomain).put(localMember.getUuid(),
carbonLocalMember);
- BundleContext bundleContext = CarbonCoreDataHolder.getInstance().
- getBundleContext();
- bundleContext.registerService(DistributedMapProvider.class,
- new
HazelcastDistributedMapProvider(primaryHazelcastInstance),
- null);
+ BundleContext bundleContext =
CarbonCoreDataHolder.getInstance().getBundleContext();
+ distributedMapProviderServiceRegistration =
+ bundleContext.registerService(DistributedMapProvider.class,
+ new
HazelcastDistributedMapProvider(primaryHazelcastInstance),
+ null);
bundleContext.registerService(HazelcastInstance.class,
primaryHazelcastInstance, null);
bundleContext.registerService(CarbonCluster.class,
hazelcastCarbonCluster, null);
@@ -373,6 +375,8 @@
public void shutdown() throws ClusteringFault {
try {
Hazelcast.shutdownAll();
+ // Unregister the DistributedMapProvider
+ distributedMapProviderServiceRegistration.unregister();
} catch (Exception ignored) {
}
}
Index:
org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/util/HouseKeepingTask.java
===================================================================
---
org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/util/HouseKeepingTask.java
(revision
180199)
+++
org.wso2.carbon.core/src/main/java/org/wso2/carbon/core/util/HouseKeepingTask.java
(working
copy)
@@ -72,10 +72,11 @@
}
File[] children = file.listFiles();
if (children != null) {
- for (int i = 0; i < children.length; i++) {
- clean(children[i], deletedFiles);
+ for (File child : children) {
+ clean(child, deletedFiles);
}
- if (file.listFiles() == null || file.listFiles().length == 0)
{ // all children deleted?
+ children = file.listFiles();
+ if (children == null || children.length == 0) { // all
children deleted?
String absPath = file.getAbsolutePath();
if (log.isDebugEnabled()) {
log.debug("Deleting directory " + absPath + "...");
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev