Thread: [Joafip-svn] SF.net SVN: joafip:[2976] trunk/joafip/src (Page 2)
Brought to you by:
luc_peuvrier
|
From: <luc...@us...> - 2011-11-21 19:54:05
|
Revision: 2976
http://joafip.svn.sourceforge.net/joafip/?rev=2976&view=rev
Author: luc_peuvrier
Date: 2011-11-21 19:53:58 +0000 (Mon, 21 Nov 2011)
Log Message:
-----------
refactoring
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/ExportStoreQue.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
trunk/joafip/src/test/java/net/sf/joafip/service/TestFilePersistenceNoG.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractSerializeTest.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2012-11-18 15:32:20
|
Revision: 3155
http://joafip.svn.sourceforge.net/joafip/?rev=3155&view=rev
Author: luc_peuvrier
Date: 2012-11-18 15:32:11 +0000 (Sun, 18 Nov 2012)
Log Message:
-----------
new ay to obtains data record identifier set of data record for garbage management
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java
trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/GarbageManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/GarbageCandidateRecordManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/LinkRecordManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/ToGarbageRecordManager.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2012-11-18 15:32:20
|
Revision: 3155
http://joafip.svn.sourceforge.net/joafip/?rev=3155&view=rev
Author: luc_peuvrier
Date: 2012-11-18 15:32:11 +0000 (Sun, 18 Nov 2012)
Log Message:
-----------
new ay to obtains data record identifier set of data record for garbage management
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java
trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/GarbageManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/GarbageCandidateRecordManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/LinkRecordManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/ToGarbageRecordManager.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java
Modified: trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -24,7 +24,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.TreeSet;
import net.sf.joafip.Fortest;
import net.sf.joafip.NoStorableAccess;
@@ -853,11 +852,11 @@
}
}
- @Fortest
- public List<DataRecordIdentifier> usedForGarbageManagement()
+ public void usedForGarbageManagement(
+ final Set<DataRecordIdentifier> setToUpdate)
throws FilePersistenceException {
try {
- return store.usedForGarbageManagement();
+ store.usedForGarbageManagement(setToUpdate);
} catch (final StoreException exception) {
throw new FilePersistenceException(exception);
}
@@ -1358,14 +1357,12 @@
}
}
- @Fortest
@Override
- public Set<DataRecordIdentifier> usedForClassNameManagement()
+ public void usedForClassNameManagement(
+ final Set<DataRecordIdentifier> setToUpdate)
throws FilePersistenceException {
try {
- final Set<DataRecordIdentifier> setToUpdate = new TreeSet<DataRecordIdentifier>();
store.usedForClassNameManagement(setToUpdate);
- return setToUpdate;
} catch (final StoreException exception) {
throw new FilePersistenceException(exception);
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -25,7 +25,6 @@
import java.util.Map;
import java.util.Set;
-import net.sf.joafip.Fortest;
import net.sf.joafip.StorableClass;
import net.sf.joafip.StoreSerializeAndZippedInOneRecord;
import net.sf.joafip.entity.MutableInteger;
@@ -1334,8 +1333,7 @@
ClassInfo classInfoOfObject(Object object) throws FilePersistenceException;
- @Fortest
- Set<DataRecordIdentifier> usedForClassNameManagement()
+ void usedForClassNameManagement(Set<DataRecordIdentifier> setToUpdate)
throws FilePersistenceException;
/**
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -537,8 +537,8 @@
*/
boolean isBackgroundGarbageSweepWorking() throws StoreException;
- @Fortest
- List<DataRecordIdentifier> usedForGarbageManagement() throws StoreException;
+ void usedForGarbageManagement(Set<DataRecordIdentifier> setToUpdate)
+ throws StoreException;
/**
*
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -30,6 +30,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
@@ -1350,12 +1351,11 @@
}
}
- @Fortest
@Override
- public List<DataRecordIdentifier> usedForGarbageManagement()
+ public void usedForGarbageManagement(Set<DataRecordIdentifier> setToUpdate)
throws StoreException {
assertManageGarbage();
- return storeGarbager.usedForGarbageManagement();
+ storeGarbager.usedForGarbageManagement(setToUpdate);
}
private void assertManageGarbage() throws StoreException {
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/GarbageManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/GarbageManager.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/GarbageManager.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -17,6 +17,7 @@
package net.sf.joafip.store.service.garbage;
import java.util.List;
+import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.NotStorableClass;
@@ -633,21 +634,22 @@
return garbageCandidateRecordManager;
}
- @Fortest
- public List<DataRecordIdentifier> getLinkRecordAllDataRecordIdentifiers()
- throws GarbageException, ReferenceLinkGarbageException {
- return linkRecordManager.getAllDataRecordIdentifiers();
+ @Override
+ public void getLinkRecordAllDataRecordIdentifiers(
+ final Set<DataRecordIdentifier> setToUpdate) throws GarbageException,
+ ReferenceLinkGarbageException {
+ linkRecordManager.getAllDataRecordIdentifiers(setToUpdate);
}
- @Fortest
- public List<DataRecordIdentifier> getToGarbageRecordAllDataRecordIdentifiers()
- throws GarbageException {
- return toGarbageRecordManager.getAllDataRecordIdentifiers();
+ @Override
+ public void getToGarbageRecordAllDataRecordIdentifiers(
+ final Set<DataRecordIdentifier> setToUpdate) throws GarbageException {
+ toGarbageRecordManager.getAllDataRecordIdentifiers(setToUpdate);
}
- @Fortest
- public List<DataRecordIdentifier> getCandidateRecordAllDataRecordIdentifiers()
- throws GarbageException {
- return garbageCandidateRecordManager.getAllDataRecordIdentifiers();
+ @Override
+ public void getCandidateRecordAllDataRecordIdentifiers(
+ final Set<DataRecordIdentifier> setToUpdate) throws GarbageException {
+ garbageCandidateRecordManager.getAllDataRecordIdentifiers(setToUpdate);
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -17,6 +17,7 @@
package net.sf.joafip.store.service.garbage;
import java.util.List;
+import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.kvstore.record.entity.DataRecordIdentifier;
@@ -72,14 +73,12 @@
boolean isOneGarbaged();
- List<DataRecordIdentifier> getLinkRecordAllDataRecordIdentifiers()
+ void getLinkRecordAllDataRecordIdentifiers(Set<DataRecordIdentifier> setToUpdate)
throws GarbageException, ReferenceLinkGarbageException;
- @Fortest
- List<DataRecordIdentifier> getToGarbageRecordAllDataRecordIdentifiers()
+ void getToGarbageRecordAllDataRecordIdentifiers(Set<DataRecordIdentifier> setToUpdate)
throws GarbageException;
- @Fortest
- List<DataRecordIdentifier> getCandidateRecordAllDataRecordIdentifiers()
+ void getCandidateRecordAllDataRecordIdentifiers(Set<DataRecordIdentifier> setToUpdate)
throws GarbageException;
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -17,6 +17,7 @@
package net.sf.joafip.store.service.garbage;
import java.util.List;
+import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.NotStorableClass;
@@ -390,17 +391,14 @@
}
}
- @Fortest
- public List<DataRecordIdentifier> usedForGarbageManagement()
- throws StoreException {
+ public void usedForGarbageManagement(
+ final Set<DataRecordIdentifier> setToUpdate) throws StoreException {
try {
- final List<DataRecordIdentifier> allUseDataRecordIdentifier = garbageManager
- .getLinkRecordAllDataRecordIdentifiers();
- allUseDataRecordIdentifier.addAll(garbageManager
- .getToGarbageRecordAllDataRecordIdentifiers());
- allUseDataRecordIdentifier.addAll(garbageManager
- .getCandidateRecordAllDataRecordIdentifiers());
- return allUseDataRecordIdentifier;
+ garbageManager.getLinkRecordAllDataRecordIdentifiers(setToUpdate);
+ garbageManager
+ .getToGarbageRecordAllDataRecordIdentifiers(setToUpdate);
+ garbageManager
+ .getCandidateRecordAllDataRecordIdentifiers(setToUpdate);
} catch (GarbageException exception) {
throw new StoreException(exception);
} catch (ReferenceLinkGarbageException exception) {
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/GarbageCandidateRecordManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/GarbageCandidateRecordManager.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/GarbageCandidateRecordManager.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -18,6 +18,7 @@
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.NotStorableClass;
@@ -247,20 +248,18 @@
return list;
}
- @Fortest
- public List<DataRecordIdentifier> getAllDataRecordIdentifiers()
+ public void getAllDataRecordIdentifiers(
+ final Set<DataRecordIdentifier> setToUpdate)
throws GarbageException {
- final List<DataRecordIdentifier> list = new LinkedList<DataRecordIdentifier>();
try {
for (IRBTNode<DataRecordIdentifier> node : garbageCandidateTree) {
final DataRecordIdentifier dataRecordIdentifier = ((DataRecordIdentifierRBTNode) node)
.getDataRecordIdentifier();
- list.add(dataRecordIdentifier);
+ setToUpdate.add(dataRecordIdentifier);
}
} catch (Exception exception) {
throw new GarbageException(exception);
}
- return list;
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/LinkRecordManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/LinkRecordManager.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/LinkRecordManager.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -18,6 +18,7 @@
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.NotStorableClass;
@@ -347,15 +348,14 @@
}
}
- @Fortest
- public List<DataRecordIdentifier> getAllDataRecordIdentifiers()
+ public void getAllDataRecordIdentifiers(
+ final Set<DataRecordIdentifier> setToUpdate)
throws GarbageException, ReferenceLinkGarbageException {
- final List<DataRecordIdentifier> list = new LinkedList<DataRecordIdentifier>();
try {
for (IRBTNode<ReferenceLink> node : garbageReferenceLinkTree) {
final DataRecordIdentifier dataRecordIdentifier = node
.getElement().getNode().getDataRecordIdentifier();
- list.add(dataRecordIdentifier);
+ setToUpdate.add(dataRecordIdentifier);
}
} catch (RBTException exception) {
rbtExceptionCause(exception);
@@ -363,6 +363,5 @@
// rbtExceptionCause always throw
// exception
}
- return list;
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/ToGarbageRecordManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/ToGarbageRecordManager.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/recordmgr/ToGarbageRecordManager.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -18,6 +18,7 @@
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.NotStorableClass;
@@ -239,20 +240,18 @@
return list;
}
- @Fortest
- public List<DataRecordIdentifier> getAllDataRecordIdentifiers()
+ public void getAllDataRecordIdentifiers(
+ final Set<DataRecordIdentifier> setToUpdate)
throws GarbageException {
- final List<DataRecordIdentifier> list = new LinkedList<DataRecordIdentifier>();
try {
for (IRBTNode<DataRecordIdentifier> node : toGarbageTree) {
final DataRecordIdentifier dataRecordIdentifier = ((DataRecordIdentifierRBTNode) node)
.getDataRecordIdentifier();
- list.add(dataRecordIdentifier);
+ setToUpdate.add(dataRecordIdentifier);
}
} catch (Exception exception) {
throw new GarbageException(exception);
}
- return list;
}
}
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -975,9 +975,9 @@
store.usedForClassNameManagement(setToUpdate);
}
- public List<DataRecordIdentifier> usedForGarbageManagement()
+ public void usedForGarbageManagement(Set<DataRecordIdentifier> setToUpdate)
throws StoreException {
- return store.usedForGarbageManagement();
+ store.usedForGarbageManagement(setToUpdate);
}
public long usedSize() throws StoreException {
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java 2012-11-18 15:02:22 UTC (rev 3154)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java 2012-11-18 15:32:11 UTC (rev 3155)
@@ -25,6 +25,7 @@
import java.util.Collection;
import java.util.List;
import java.util.Set;
+import java.util.TreeSet;
import junit.framework.TestCase;
import net.sf.joafip.NotStorableClass;
@@ -98,10 +99,12 @@
.getDataRecordIdentifierSet();
forObjectDatarecordIdentifierSet
.remove(new DataRecordIdentifier(0));
- forObjectDatarecordIdentifierSet.removeAll(filePersistence
- .usedForGarbageManagement());
- forObjectDatarecordIdentifierSet.removeAll(filePersistence
- .usedForClassNameManagement());
+
+ Set<DataRecordIdentifier> setToUpdate=new TreeSet<DataRecordIdentifier>();
+ filePersistence.usedForGarbageManagement(setToUpdate);
+ filePersistence.usedForClassNameManagement(setToUpdate);
+ forObjectDatarecordIdentifierSet.removeAll(setToUpdate);
+
for (DataRecordIdentifier referencingDataRecordIdentifier : forObjectDatarecordIdentifierSet) {
final ObjectLinkTreeNode objectLinkTreeNode = objectIOManager
.getObjectLinkTreeNode(referencingDataRecordIdentifier);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2012-11-22 06:54:13
|
Revision: 3156
http://joafip.svn.sourceforge.net/joafip/?rev=3156&view=rev
Author: luc_peuvrier
Date: 2012-11-22 06:54:06 +0000 (Thu, 22 Nov 2012)
Log Message:
-----------
foreground garbage changed
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java
trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/FieldInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/IStoreForGarbage.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/LinkManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/IStoreSaverForGarbage.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
trunk/joafip/src/main/java/net/sf/joafip/util/PersistantDataRecordIdentifierSet.java
trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestRuntime310Garbage.java
trunk/joafip/src/test/java/net/sf/joafip/store/entity/garbage/ReferenceLinkGraph.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestGarbage.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestNoGarbage.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundFile.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundMemory.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/TestStoreGarbager.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2012-11-22 06:54:14
|
Revision: 3156
http://joafip.svn.sourceforge.net/joafip/?rev=3156&view=rev
Author: luc_peuvrier
Date: 2012-11-22 06:54:06 +0000 (Thu, 22 Nov 2012)
Log Message:
-----------
foreground garbage changed
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java
trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/FieldInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/IStoreForGarbage.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/LinkManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/IStoreSaverForGarbage.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
trunk/joafip/src/main/java/net/sf/joafip/util/PersistantDataRecordIdentifierSet.java
trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestRuntime310Garbage.java
trunk/joafip/src/test/java/net/sf/joafip/store/entity/garbage/ReferenceLinkGraph.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestGarbage.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestNoGarbage.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundFile.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundMemory.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/GarbageDataIntegrityChecker.java
trunk/joafip/src/test/java/net/sf/joafip/store/service/garbage/TestStoreGarbager.java
Modified: trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -810,11 +810,19 @@
}
@Override
- public int garbageSweep() throws FilePersistenceException {
+ public int garbageSweep(final String filePath)
+ throws FilePersistenceException,
+ FilePersistenceClassNotFoundException,
+ FilePersistenceDataCorruptedException {
+ assertSessionClosed();
try {
- return store.garbageSweep();
+ return store.garbageSweep(filePath);
} catch (final StoreException exception) {
throw new FilePersistenceException(exception);
+ } catch (StoreClassNotFoundException exception) {
+ throw new FilePersistenceClassNotFoundException(exception);
+ } catch (StoreDataCorruptedException exception) {
+ throw new FilePersistenceDataCorruptedException(exception);
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -779,10 +779,16 @@
* garbage sweep, remove data record for object not attached to root<br>
* should be call only when session closed<br>
*
+ * @param filePath
+ * temporary file for data record identifier set
* @return number of garbage data record seeped
* @throws FilePersistenceException
+ * @throws FilePersistenceClassNotFoundException
+ * @throws FilePersistenceDataCorruptedException
*/
- int garbageSweep() throws FilePersistenceException;
+ int garbageSweep(final String filePath) throws FilePersistenceException,
+ FilePersistenceClassNotFoundException,
+ FilePersistenceDataCorruptedException;
/**
* enable background garbage sweep operation<br>
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/FieldInfo.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/FieldInfo.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/FieldInfo.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -125,7 +125,7 @@
assertNotNull = field.isAnnotationPresent(AssertNotNull.class);
}
- // FIXMELUC _______known field: called ?
+ // FIXMELUC ______known field: called ?
public FieldInfo(final ClassInfo declaringClass, final String fieldName,
final ClassInfo fieldType, final Boolean staticField,
final Boolean transientField) throws ClassInfoException {
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -507,10 +507,15 @@
* garbage sweep, remove data record for object not attached to root<br>
* should be call only when all object detached, at startup or after commit<br>
*
+ * @param filePath
+ * temporary file for data record identifier set
* @return number of garbage data record swept
* @throws StoreException
+ * @throws StoreDataCorruptedException
+ * @throws StoreClassNotFoundException
*/
- int garbageSweep() throws StoreException;
+ int garbageSweep(final String filePath) throws StoreException,
+ StoreClassNotFoundException, StoreDataCorruptedException;
/**
* enable background garbage sweep operation
@@ -585,6 +590,7 @@
IHeapDataManager getDataManager() throws StoreException;
+ @Override
IClassNameManager getClassNameManager();
int getClassIdentifier(Class<?> clazz) throws StoreException,
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/IStoreForGarbage.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/IStoreForGarbage.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/IStoreForGarbage.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -24,6 +24,8 @@
import net.sf.joafip.service.JoafipMutex;
import net.sf.joafip.store.service.garbage.GarbageManager;
+import net.sf.joafip.store.service.objectio.manager.IClassNameManager;
+import net.sf.joafip.store.service.objectio.manager.IObjectIoManagerForGarbage;
/**
*
@@ -36,5 +38,9 @@
GarbageManager getGarbageManager();
+ IClassNameManager getClassNameManager();
+
+ IObjectIoManagerForGarbage getObjectIOManager() throws StoreException;
+
JoafipMutex getMutex();
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -1316,10 +1316,10 @@
}
@Override
- public int garbageSweep() throws StoreException {
+ public int garbageSweep(final String filePath) throws StoreException,
+ StoreClassNotFoundException, StoreDataCorruptedException {
synchronized (mutex) {
- assertManageGarbage();
- return storeGarbager.garbageSweep();
+ return storeGarbager.garbageSweep(filePath);
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/IGarbageManagerForCollect.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -81,4 +81,8 @@
void getCandidateRecordAllDataRecordIdentifiers(Set<DataRecordIdentifier> setToUpdate)
throws GarbageException;
+
+ boolean removeFromCandidateAndOrFromToGarbage(
+ final DataRecordIdentifier dataRecordIdentifier)
+ throws GarbageException;
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/LinkManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/LinkManager.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/LinkManager.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -104,7 +104,7 @@
}
/**
- * remove a link from reference to referenced<br>
+ * remove a link from referencing to referenced<br>
* {@link #initializeLinkUpdate()} must be called before first call to this
* method<br>
*
@@ -132,6 +132,12 @@
}
}
+ public void removeLinkIfExist(
+ DataRecordIdentifier referencedDataRecordIdentifier)
+ throws GarbageException, ReferenceLinkGarbageException {
+ linkRecordManager.removeLinkIfExist(referencedDataRecordIdentifier);
+ }
+
/**
* update link between object on database according to
* {@link #addLink(long, long)} and {@link #removeLink(long)} call<br>
@@ -274,4 +280,8 @@
throws GarbageException, ReferenceLinkGarbageException {
return linkRecordManager.isReferenced(dataRecordIdentifier);
}
+
+ public LinkRecordManager getLinkRecordManager() {
+ return linkRecordManager;
+ }
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/garbage/StoreGarbager.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -16,22 +16,37 @@
*/
package net.sf.joafip.store.service.garbage;
+import java.util.Deque;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import net.sf.joafip.Fortest;
import net.sf.joafip.NotStorableClass;
import net.sf.joafip.kvstore.record.entity.DataRecordIdentifier;
+import net.sf.joafip.kvstore.service.HeapException;
+import net.sf.joafip.kvstore.service.IHeapDataManager;
import net.sf.joafip.logger.JoafipLogger;
import net.sf.joafip.service.JoafipMutex;
import net.sf.joafip.store.entity.garbage.DataRecordIdentifierRBTNode;
import net.sf.joafip.store.entity.garbage.ReferenceLink;
import net.sf.joafip.store.entity.garbage.ReferenceLinkGarbageException;
+import net.sf.joafip.store.entity.objectio.ObjectLinkTreeNode;
import net.sf.joafip.store.service.IGarbageListener;
import net.sf.joafip.store.service.IStoreForGarbage;
import net.sf.joafip.store.service.Store;
+import net.sf.joafip.store.service.StoreClassNotFoundException;
+import net.sf.joafip.store.service.StoreDataCorruptedException;
import net.sf.joafip.store.service.StoreException;
+import net.sf.joafip.store.service.garbage.recordmgr.LinkRecordManager;
+import net.sf.joafip.store.service.objectio.ObjectIOClassNotFoundException;
+import net.sf.joafip.store.service.objectio.ObjectIODataCorruptedException;
+import net.sf.joafip.store.service.objectio.ObjectIODataRecordNotFoundException;
+import net.sf.joafip.store.service.objectio.ObjectIOException;
+import net.sf.joafip.store.service.objectio.manager.IObjectIoManagerForGarbage;
import net.sf.joafip.store.service.saver.IStoreSaverForGarbage;
+import net.sf.joafip.util.PersistantDataRecordIdentifierSet;
/**
* garbage operation for {@link Store}<br>
@@ -55,6 +70,8 @@
/** manage saving of object */
private IStoreSaverForGarbage storeSaver;
+ private final IObjectIoManagerForGarbage objectIOManager;
+
private final JoafipMutex storeMutex;
/** sleep time between garbage collect operation */
@@ -78,15 +95,26 @@
private int numberOFGarbaged;
+ private LinkRecordManager linkRecordManager;;
+
+ //private LinkManager linkManager;
+
public StoreGarbager(final IStoreForGarbage store) throws StoreException {
super();
this.store = store;
garbageManager = store.getGarbageManager();
+ objectIOManager = store.getObjectIOManager();
this.storeMutex = store.getMutex();
}
public void setStoreSaver(final IStoreSaverForGarbage storeSaver) {
this.storeSaver = storeSaver;
+ LinkManager linkManager = storeSaver.getLinkManager();
+ if( linkManager==null) {
+ linkRecordManager=null;
+ } else {
+ linkRecordManager=linkManager.getLinkRecordManager();
+ }
}
public void setGarbageListener(final IGarbageListener listener) {
@@ -158,34 +186,113 @@
/**
* garbage sweep, remove data record for object not attached to root<br>
*
+ * @param filePath
+ * temporary file for data record identifier set
* @return number of garbage data record sweep
* @throws StoreException
+ * @throws StoreClassNotFoundException
+ * @throws StoreDataCorruptedException
*/
- public int garbageSweep() throws StoreException {
+ // FIXMELUC ____________garbageSweep
+ public int garbageSweep(final String filePath) throws StoreException,
+ StoreClassNotFoundException, StoreDataCorruptedException {
numberOFGarbaged = 0;
+ PersistantDataRecordIdentifierSet toPreserveSet = null;
try {
+ toPreserveSet = new PersistantDataRecordIdentifierSet(filePath);
+ toPreserveSet.startService(true);
+ store.getClassNameManager().getAllDataRecordIdentifiers(
+ toPreserveSet);
+ store.getGarbageManager()
+ .getCandidateRecordAllDataRecordIdentifiers(toPreserveSet);
+ store.getGarbageManager().getLinkRecordAllDataRecordIdentifiers(
+ toPreserveSet);
+ store.getGarbageManager()
+ .getToGarbageRecordAllDataRecordIdentifiers(toPreserveSet);
+
+ toPreserveSet.add(Store.IDENTIFIER_FOR_STORE_HEADER);
+ final Deque<DataRecordIdentifier> que = new LinkedList<DataRecordIdentifier>();
+ DataRecordIdentifier dataRecordIdentifier = Store.IDENTIFIER_FOR_ROOT;
+ que.add(dataRecordIdentifier);
+ toPreserveSet.add(dataRecordIdentifier);
storeSaver.resetModificationCount();
+ while ((dataRecordIdentifier = que.pollFirst()) != null) {
+ final ObjectLinkTreeNode objectLinkTreeNode = objectIOManager
+ .getObjectLinkTreeNode(dataRecordIdentifier);
+ final DataRecordIdentifier[] referencedList = objectLinkTreeNode
+ .getReferencedList();
+ for (DataRecordIdentifier referenced : referencedList) {
+ if (toPreserveSet.add(referenced)) {
+ que.add(referenced);
+ storeSaver.performModificationDone();
+ }
+ }
+ }
+
+ final IHeapDataManager dataManager = storeSaver.getDataManager();
+ final Iterator<DataRecordIdentifier> iterator = dataManager
+ .dataRecordIterator();
garbageStartNotify();
- boolean operationDone;
- do {
- operationDone = garbageManager.garbagePass();
- if (garbageManager.isOneGarbaged()) {
+ while (iterator.hasNext()) {
+ final DataRecordIdentifier existing = iterator.next();
+ garbageManager.removeFromCandidateAndOrFromToGarbage(existing);
+ if (!toPreserveSet.contains(existing)) {
+ if (linkRecordManager == null) {
+ dataManager.deleteDataRecord(existing);
+ } else {
+ linkRecordManager.removeLinkIfExist(existing/*referenced*/);
+ final ObjectLinkTreeNode objectLinkTreeNode = objectIOManager
+ .getObjectLinkTreeNode(existing);
+ dataManager.deleteDataRecord(existing);
+ final DataRecordIdentifier[] referencedList = objectLinkTreeNode
+ .getReferencedList();
+ for (DataRecordIdentifier referenced : referencedList) {
+ removeLink(existing/*referencing*/, referenced);
+ }
+ }
numberOFGarbaged++;
+ notifyGarbaged();
}
- notifyGarbaged();
- if (operationDone) {
- storeSaver.performModificationDone();
- }
- } while (operationDone);
+ storeSaver.performModificationDone();
+ }
storeSaver.saveModification();
+
} catch (GarbageException exception) {
throw new StoreException(exception);
} catch (ReferenceLinkGarbageException exception) {
throw new StoreException(exception);
+ } catch (HeapException exception) {
+ throw new StoreException(exception);
+ } catch (ObjectIOException exception) {
+ throw new StoreException(exception);
+ } catch (ObjectIOClassNotFoundException exception) {
+ throw new StoreClassNotFoundException(exception);
+ } catch (ObjectIODataRecordNotFoundException exception) {
+ throw new StoreException(exception);
+ } catch (ObjectIODataCorruptedException exception) {
+ throw new StoreDataCorruptedException(exception);
+ } finally {
+ if (toPreserveSet != null) {
+ try {
+ toPreserveSet.stopService(true);
+ } catch (Exception exception) {
+ // ignore error
+ LOGGER.error("closing set", exception);
+ }
+ }
}
return numberOFGarbaged;
}
+ private void removeLink(final DataRecordIdentifier referencing,
+ final DataRecordIdentifier referenced) throws GarbageException, ReferenceLinkGarbageException {
+ final ReferenceLink referenceLink = linkRecordManager.searchByReferenced(referenced);
+ if( referenceLink!=null) {
+ referenceLink.decrementLinkCount(referencing);
+ linkRecordManager.updateReferenceLink(referenceLink);
+ }
+ }
+
private void garbageStartNotify() throws GarbageException {
if (garbageListener != null) {
final int leftToGarbage = garbageManager.getNumberOfToGarbage();
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -972,7 +972,7 @@
return bodyData;
}
- @Fortest
+ @Override
public ObjectLinkTreeNode getObjectLinkTreeNode(
final DataRecordIdentifier dataRecordIdentifier)
throws ObjectIOException, ObjectIODataRecordNotFoundException,
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/IStoreSaverForGarbage.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/IStoreSaverForGarbage.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/IStoreSaverForGarbage.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -16,7 +16,9 @@
*/
package net.sf.joafip.store.service.saver;
+import net.sf.joafip.kvstore.service.IHeapDataManager;
import net.sf.joafip.store.service.StoreException;
+import net.sf.joafip.store.service.garbage.LinkManager;
public interface IStoreSaverForGarbage {
@@ -35,4 +37,10 @@
* @throws StoreException
*/
boolean saveModification() throws StoreException;
+
+ void flush() throws StoreException;
+
+ IHeapDataManager getDataManager();
+
+ LinkManager getLinkManager();
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -899,7 +899,8 @@
*
* @throws StoreException
*/
- private void flush() throws StoreException {
+ @Override
+ public void flush() throws StoreException {
/* now can save the record for class name and garbage */
try {
heapRecordableManager.save();
@@ -961,4 +962,13 @@
public void setStoreOnlyMarkedStorable(final boolean storeOnlyMarkedStorable) {
this.storeOnlyMarkedStorable = storeOnlyMarkedStorable;
}
+
+ @Override
+ public IHeapDataManager getDataManager() {
+ return dataManager;
+ }
+
+ public LinkManager getLinkManager() {
+ return linkManager;
+ }
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/util/PersistantDataRecordIdentifierSet.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/util/PersistantDataRecordIdentifierSet.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/main/java/net/sf/joafip/util/PersistantDataRecordIdentifierSet.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -73,6 +73,10 @@
heapDataManagerForSet.stopService();
}
+ public void stopService(final boolean removeFiles) throws HeapException {
+ heapDataManagerForSet.stopService(removeFiles);
+ }
+
@Override
public Iterator<DataRecordIdentifier> iterator() {
try {
Modified: trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestRuntime310Garbage.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestRuntime310Garbage.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestRuntime310Garbage.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -7,6 +7,7 @@
import net.sf.joafip.NotStorableClass;
import net.sf.joafip.StorableAccess;
import net.sf.joafip.TestException;
+import net.sf.joafip.entity.EnumFilePersistenceCloseAction;
import net.sf.joafip.kvstore.entity.EnumFileAccessMode;
import net.sf.joafip.kvstore.record.entity.DataRecordIdentifier;
import net.sf.joafip.kvstore.service.HeapException;
@@ -138,11 +139,14 @@
assertFalse("bob1 #" + dataRecordIdentifier + "must not be to garbage",
garbageDataIntegrityChecker
.isKnownToGarbage(dataRecordIdentifier));
-
- filePersistence.garbageSweep();
-
+ session.setObject("bob1",bob1);
+
+ session.close(EnumFilePersistenceCloseAction.SAVE);
+ filePersistence.garbageSweep("runtime/set");
+ session.open();
+
garbageDataIntegrityChecker.check(filePersistence);
- assertAttachedState(dataRecordIdentifier, false);
+ assertAttachedState(dataRecordIdentifier, true);
assertFalse("bob1 #" + dataRecordIdentifier
+ " must not be a garbage candidate",
garbageDataIntegrityChecker
@@ -155,18 +159,16 @@
bob1 = (Bob1) filePersistence
.createObjectReadingInStoreOrGetExisting(dataRecordIdentifier);
assertEquals("bad value", 10, bob1.getVal());
+
session.close();
garbageDataIntegrityChecker.check(filePersistence);
- assertAttachedState(dataRecordIdentifier, false);
- filePersistence.garbageSweep();
+ assertAttachedState(dataRecordIdentifier, true);
+ filePersistence.garbageSweep("runtime/set");
garbageDataIntegrityChecker.check(filePersistence);
// bad test below because data record is deleted
// assertAttachedState(dataRecordIdentifier, false);
- session.open();
-
- assertDeleted(dataRecordIdentifier);
}
public void testGarbageInBackground() throws FilePersistenceException,
@@ -265,23 +267,25 @@
garbageDataIntegrityChecker.check(filePersistence);
assertAttachedState(dataRecordIdentifier, false);
- filePersistence.garbageSweep();
+ session.close(EnumFilePersistenceCloseAction.SAVE);
+ filePersistence.garbageSweep("runtime/set");
+// session.open();
- // check if kept in file
- assertTrue("must be unloaded", ProxyManager2.isUnloaded(bob1));
- assertEquals("bad value", 10, bob1.getVal());
+// // check if kept in file
+// assertTrue("must be unloaded", ProxyManager2.isUnloaded(bob1));
+// assertEquals("bad value", 10, bob1.getVal());
+//
+// bob1 = null;// NOPMD release object
- bob1 = null;// NOPMD release object
+// _LOG.debug("session close");
+// session.close();
- _LOG.debug("session close");
- session.close();
-
garbageDataIntegrityChecker.check(filePersistence);
assertAttachedState(dataRecordIdentifier, false);
garbageDataIntegrityChecker.check(filePersistence);
_LOG.debug("garbage sweep");
- filePersistence.garbageSweep();
+ filePersistence.garbageSweep("runtime/set");
session.open();
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/entity/garbage/ReferenceLinkGraph.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/entity/garbage/ReferenceLinkGraph.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/entity/garbage/ReferenceLinkGraph.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -26,6 +26,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
@@ -114,6 +115,10 @@
}
}
+ public boolean hasDataRecordIdentifier(final DataRecordIdentifier identifier) {
+ return map.containsKey(identifier);
+ }
+
public Set<DataRecordIdentifier> getAllDataRecordIdentifier() {
return map.keySet();
}
@@ -193,4 +198,27 @@
builder.append("\n]");
return builder.toString();
}
+
+ public String refMapToString() {
+ final StringBuffer stringBuffer=new StringBuffer();
+ for(Entry<DataRecordIdentifier, ReferenceLinkEntry> entry:map.entrySet()) {
+ DataRecordIdentifier dataRecordIdentifier = entry.getKey();
+ ReferenceLinkEntry refLink = entry.getValue();
+ Set<DataRecordIdentifier> referencedSet = refLink.getReferencedSet();
+ for(DataRecordIdentifier referenced:referencedSet) {
+ stringBuffer.append(dataRecordIdentifier);
+ stringBuffer.append("->");
+ stringBuffer.append(referenced);
+ stringBuffer.append('\n');
+ }
+ Set<DataRecordIdentifier> referencingSet = refLink.getReferencingSet();
+ for(DataRecordIdentifier referencing:referencedSet) {
+ stringBuffer.append(dataRecordIdentifier);
+ stringBuffer.append("<-");
+ stringBuffer.append(referencing);
+ stringBuffer.append('\n');
+ }
+ }
+ return stringBuffer.toString();
+ }
}
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestGarbage.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestGarbage.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestGarbage.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -810,6 +810,7 @@
});
}
- protected abstract void garbageSweep() throws StoreException;
+ protected abstract void garbageSweep() throws StoreException,
+ StoreClassNotFoundException, StoreDataCorruptedException;
}
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestNoGarbage.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestNoGarbage.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/service/AbstractTestNoGarbage.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -164,7 +164,7 @@
/*
* do garbage collection even if garbage management disable
*/
- tryGarbageSweep();
+ store.garbageSweep("runtime/set");
/*
* assert no garbage information after detaching object
@@ -185,24 +185,15 @@
logAllDataIdentifier();
numberOfDataRecord = dataManager.getNumberOfDataRecord();
assertEquals("number of data record must not change",
- initialNumberOfDataRecord, numberOfDataRecord);
+ initialNumberOfDataRecord - 2, numberOfDataRecord);
assertDataRecord(new DataRecordIdentifier[] {
/**/Store.IDENTIFIER_FOR_STORE_HEADER,/* store header */
/**/Store.IDENTIFIER_FOR_ROOT,/* root record */
- /**/idBobContainer,/**/
- /**/idBob1,/**/
- /**/idBob2 /**/
- }, new DataRecordIdentifier[] {});
+ /**/idBobContainer // ,/**/
+ // /**/idBob1,/**/
+ // /**/idBob2 /**/
+ }, new DataRecordIdentifier[] {});
}
- private void tryGarbageSweep() {
- try {
- logger.debug("try garbage collection");
- store.garbageSweep();
- fail("garbage collector invocation must failed");// NOPMD
- } catch (final StoreException exception) {// NOPMD
- // expected exception
- }
- }
}
\ No newline at end of file
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -356,8 +356,9 @@
return store.freeSize();
}
- public int garbageSweep() throws StoreException {
- return store.garbageSweep();
+ public int garbageSweep(final String filePath) throws StoreException,
+ StoreClassNotFoundException, StoreDataCorruptedException {
+ return store.garbageSweep(filePath);
}
public ReferenceLink[] getAllReferenceLink() throws StoreException {
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundFile.java
===================================================================
--- trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundFile.java 2012-11-18 15:32:11 UTC (rev 3155)
+++ trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundFile.java 2012-11-22 06:54:06 UTC (rev 3156)
@@ -54,7 +54,8 @@
}
@Override
- protected void garbageSweep() throws StoreException {
- store.garbageSweep();
+ protected void garbageSweep() throws StoreException,
+ StoreClassNotFoundException, StoreDataCorruptedException {
+ store.garbageSweep("runtime/set");
}
}
Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/TestGarbageForegroundMemory.java
===================================================================
--- trunk/joafip/src/test/j...
[truncated message content] |