You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by am...@apache.org on 2015/08/06 06:57:27 UTC
svn commit: r1694400 - in /jackrabbit/oak/branches/1.2: ./
oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/
oak-blob/src/test/java/org/apache/jackrabbit/oak/spi/blob/
oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/
oak-core/src...
Author: amitj
Date: Thu Aug 6 04:57:26 2015
New Revision: 1694400
URL: http://svn.apache.org/r1694400
Log:
OAK-2973: [Blob GC] Report accurate deleted count
Merged revision 1694394 from trunk
Modified:
jackrabbit/oak/branches/1.2/ (props changed)
jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java
jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore.java
jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/MemoryBlobStore.java
jackrabbit/oak/branches/1.2/oak-blob/src/test/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStoreTest.java
jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStore.java
jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java
jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/BlobCache.java
jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
Propchange: jackrabbit/oak/branches/1.2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Aug 6 04:57:26 2015
@@ -1,3 +1,3 @@
/jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414-1673415,1673436,1673644,1673662-1673664,1673669,1673695,1673713,1673738,1673787,1673791,1674046,1674065,1674075,1674107,1674228,1674780,1674880,1675054-1675055,1675319,1675332,1675354,1675357,1675382,1675555,1675566,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676693,1676703,1676725,1677579,1677581,1677609,1677611,1677774,1677788,1677797,1677804,1677806,1677939,1677991,1678023,1678095-1678096,1678124,1678171,1678173,1678211,1678323,1678758,1678938,1678954,1679144,1679165,1679191,1679232,1679235,1679503,1679958,1679961,1680170,1680172,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680747,1680805-1680806,1680903,1681282,1681767,1681918,1682042,1682218,1682235,1682437,1682494,1682555,1682855,1682904,1683059,1683089,1683213,1683249,1683259,1683278,1683323,1683687,1683700,1684174-1684175,1684186,1684376,1684442,1684561,1684570,1684601,1684618,1684820,1684868
,1685023,1685075,1685370,1685552,1685589-1685590,1685840,1685964,1685977,1685989,1685999,1686023,1686032,1686097,1686162,1686229,1686234,1686253,1686414,1686780,1686854,1686857,1686971,1687053-1687055,1687175,1687196,1687198,1687220,1687239-1687240,1687301,1687441,1687553,1688089-1688090,1688172,1688179,1688349,1688421,1688436,1688453,1688616,1688622,1688634,1688636,1688817,1689003-1689004,1689008,1689577,1689581,1689623,1689810,1689828,1689831,1689833,1689903,1690017,1690043,1690047,1690057,1690247,1690249,1690634-1690637,1690650,1690669,1690674,1690885,1690941,1691139,1691151,1691159,1691167,1691183,1691188,1691210,1691280,1691307,1691331-1691333,1691345,1691384-1691385,1691401,1691509,1692133-1692134,1692156,1692250,1692274,1692363,1692382,1692478,1692955,1693002,1693030,1693209,1693421,1693525-1693526,1694007,1694393
+/jackrabbit/oak/trunk:1672350,1672468,1672537,1672603,1672642,1672644,1672834-1672835,1673351,1673410,1673414-1673415,1673436,1673644,1673662-1673664,1673669,1673695,1673713,1673738,1673787,1673791,1674046,1674065,1674075,1674107,1674228,1674780,1674880,1675054-1675055,1675319,1675332,1675354,1675357,1675382,1675555,1675566,1675593,1676198,1676237,1676407,1676458,1676539,1676670,1676693,1676703,1676725,1677579,1677581,1677609,1677611,1677774,1677788,1677797,1677804,1677806,1677939,1677991,1678023,1678095-1678096,1678124,1678171,1678173,1678211,1678323,1678758,1678938,1678954,1679144,1679165,1679191,1679232,1679235,1679503,1679958,1679961,1680170,1680172,1680182,1680222,1680232,1680236,1680461,1680633,1680643,1680747,1680805-1680806,1680903,1681282,1681767,1681918,1682042,1682218,1682235,1682437,1682494,1682555,1682855,1682904,1683059,1683089,1683213,1683249,1683259,1683278,1683323,1683687,1683700,1684174-1684175,1684186,1684376,1684442,1684561,1684570,1684601,1684618,1684820,1684868
,1685023,1685075,1685370,1685552,1685589-1685590,1685840,1685964,1685977,1685989,1685999,1686023,1686032,1686097,1686162,1686229,1686234,1686253,1686414,1686780,1686854,1686857,1686971,1687053-1687055,1687175,1687196,1687198,1687220,1687239-1687240,1687301,1687441,1687553,1688089-1688090,1688172,1688179,1688349,1688421,1688436,1688453,1688616,1688622,1688634,1688636,1688817,1689003-1689004,1689008,1689577,1689581,1689623,1689810,1689828,1689831,1689833,1689903,1690017,1690043,1690047,1690057,1690247,1690249,1690634-1690637,1690650,1690669,1690674,1690885,1690941,1691139,1691151,1691159,1691167,1691183,1691188,1691210,1691280,1691307,1691331-1691333,1691345,1691384-1691385,1691401,1691509,1692133-1692134,1692156,1692250,1692274,1692363,1692382,1692478,1692955,1693002,1693030,1693209,1693421,1693525-1693526,1694007,1694393-1694394
/jackrabbit/trunk:1345480
Modified: jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStore.java Thu Aug 6 04:57:26 2015
@@ -33,6 +33,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.WeakHashMap;
@@ -574,6 +575,11 @@ public abstract class AbstractBlobStore
public Iterator<String> resolveChunks(String blobId) throws IOException {
return new ChunkIterator(blobId);
}
+
+ @Override
+ public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ return (chunkIds.size() == countDeleteChunks(chunkIds, maxLastModifiedTime));
+ }
/**
* A block id. Blocks are small enough to fit in memory, so they can be
Modified: jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/FileBlobStore.java Thu Aug 6 04:57:26 2015
@@ -220,7 +220,8 @@ public class FileBlobStore extends Abstr
}
@Override
- public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ int count = 0;
for (String chunkId : chunkIds) {
byte[] digest = StringUtils.convertHexToBytes(chunkId);
File f = getFile(digest, false);
@@ -233,9 +234,10 @@ public class FileBlobStore extends Abstr
if ((maxLastModifiedTime <= 0)
|| FileUtils.isFileOlder(f, maxLastModifiedTime)) {
f.delete();
+ count++;
}
}
- return true;
+ return count;
}
@Override
@@ -270,4 +272,4 @@ public class FileBlobStore extends Abstr
public void clearCache() {
// no cache
}
-}
\ No newline at end of file
+}
Modified: jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/GarbageCollectableBlobStore.java Thu Aug 6 04:57:26 2015
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.spi.blob;
+import aQute.bnd.annotation.ProviderType;
+
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
@@ -23,6 +25,7 @@ import java.util.List;
/**
* A blob store that supports garbage collection.
*/
+@ProviderType
public interface GarbageCollectableBlobStore extends BlobStore {
/**
@@ -91,9 +94,20 @@ public interface GarbageCollectableBlobS
* @return true, if successful
* @throws Exception the exception
*/
+ @Deprecated
boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception;
/**
+ * Deletes the blobs with the given ids.
+ *
+ * @param chunkIds the chunk ids
+ * @param maxLastModifiedTime the max last modified time to consider for retrieval
+ * @return long the count of successful deletions
+ * @throws Exception the exception
+ */
+ long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception;
+
+ /**
* Resolve chunks from the given Id.
*
* @param blobId the blob id
Modified: jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/MemoryBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/MemoryBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/MemoryBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-blob/src/main/java/org/apache/jackrabbit/oak/spi/blob/MemoryBlobStore.java Thu Aug 6 04:57:26 2015
@@ -85,16 +85,19 @@ public class MemoryBlobStore extends Abs
* Ignores the maxlastModifiedTime
*/
@Override
- public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ int count = 0;
for (String chunkId : chunkIds) {
BlockId id = new BlockId(StringUtils.convertHexToBytes(chunkId), 0);
if (map.containsKey(id)) {
map.remove(id);
+ count++;
} else if (old.containsKey(id)) {
old.remove(id);
+ count++;
}
}
- return true;
+ return count;
}
/**
Modified: jackrabbit/oak/branches/1.2/oak-blob/src/test/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStoreTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-blob/src/test/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStoreTest.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-blob/src/test/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStoreTest.java (original)
+++ jackrabbit/oak/branches/1.2/oak-blob/src/test/java/org/apache/jackrabbit/oak/spi/blob/AbstractBlobStoreTest.java Thu Aug 6 04:57:26 2015
@@ -422,6 +422,22 @@ public abstract class AbstractBlobStoreT
assertTrue(ret.toString(), ret.isEmpty());
}
+
+ @Test
+ public void deleteCount() throws Exception {
+ Set<String> ids = createArtifacts();
+
+ long count = store.countDeleteChunks(Lists.newArrayList(ids), 0);
+
+ Iterator<String> iter = store.getAllChunkIds(0);
+ Set<String> ret = Sets.newHashSet();
+ while (iter.hasNext()) {
+ ret.add(iter.next());
+ }
+
+ assertTrue(ret.toString(), ret.isEmpty());
+ assertEquals(ids.size(), count);
+ }
private Set<String> createArtifacts() throws Exception {
Set<String> ids = Sets.newHashSet();
Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/MarkSweepGarbageCollector.java Thu Aug 6 04:57:26 2015
@@ -180,13 +180,11 @@ public class MarkSweepGarbageCollector i
mark();
if (!markOnly) {
- int deleteCount = sweep();
+ long deleteCount = sweep();
threw = false;
- LOG.info(
- "Blob garbage collection completed in {}. Number of blobs identified for deletion [{}] (This "
- + "includes blobs newer than configured interval [{}] which are ignored for deletion)",
- sw.toString(), deleteCount, maxLastModifiedInterval);
+ LOG.info("Blob garbage collection completed in {}. Number of blobs deleted [{}]", sw.toString(),
+ deleteCount, maxLastModifiedInterval);
}
} finally {
if (!LOG.isTraceEnabled()) {
@@ -282,7 +280,7 @@ public class MarkSweepGarbageCollector i
* @return the number of blobs deleted
* @throws Exception the exception
*/
- private int sweep() throws Exception {
+ private long sweep() throws Exception {
long earliestRefAvailTime;
// Merge all the blob references available from all the reference files in the data store meta store
// Only go ahead if merge succeeded
@@ -299,7 +297,9 @@ public class MarkSweepGarbageCollector i
// Calculate the references not used
difference();
- int count = 0;
+ long count = 0;
+ long deleted = 0;
+
state = State.SWEEPING;
LOG.debug("Starting sweep phase of the garbage collector");
LOG.debug("Sweeping blobs with modified time > than the configured max deleted time ({}). " +
@@ -314,18 +314,17 @@ public class MarkSweepGarbageCollector i
while (iterator.hasNext()) {
ids.add(iterator.next());
- if (ids.size() > getBatchCount()) {
+ if (ids.size() >= getBatchCount()) {
count += ids.size();
- sweepInternal(ids, exceptionQueue, earliestRefAvailTime);
+ deleted += sweepInternal(ids, exceptionQueue, earliestRefAvailTime);
ids = Lists.newArrayList();
}
}
if (!ids.isEmpty()) {
count += ids.size();
- sweepInternal(ids, exceptionQueue, earliestRefAvailTime);
+ deleted += sweepInternal(ids, exceptionQueue, earliestRefAvailTime);
}
- count -= exceptionQueue.size();
BufferedWriter writer = null;
try {
if (!exceptionQueue.isEmpty()) {
@@ -336,16 +335,23 @@ public class MarkSweepGarbageCollector i
LineIterator.closeQuietly(iterator);
IOUtils.closeQuietly(writer);
}
+
if(!exceptionQueue.isEmpty()) {
- LOG.warn(
- "Unable to delete some blobs entries from the blob store. This may happen if blob modified time is > "
- + "than the max deleted time ({}). Details around such blob entries can be found in [{}]",
- timestampToString(getLastMaxModifiedTime(earliestRefAvailTime)), fs.getGarbage().getAbsolutePath());
+ LOG.warn("Unable to delete some blobs entries from the blob store. Details around such blob entries can "
+ + "be found in [{}]",
+ fs.getGarbage().getAbsolutePath());
+ }
+ if(count != deleted) {
+ LOG.warn("Deleted only [{}] blobs entries from the [{}] candidates identified. This may happen if blob "
+ + "modified time is > "
+ + "than the max deleted time ({})", deleted, count,
+ timestampToString(getLastMaxModifiedTime(earliestRefAvailTime)));
}
+
// Remove all the merged marked references
GarbageCollectionType.get(blobStore).removeAllMarkedReferences(blobStore);
LOG.debug("Ending sweep phase of the garbage collector");
- return count;
+ return deleted;
}
private int getBatchCount() {
@@ -375,19 +381,21 @@ public class MarkSweepGarbageCollector i
* @param exceptionQueue
* @param maxModified
*/
- private void sweepInternal(List<String> ids, ConcurrentLinkedQueue<String> exceptionQueue, long maxModified) {
+ private long sweepInternal(List<String> ids, ConcurrentLinkedQueue<String> exceptionQueue, long maxModified) {
+ long deleted = 0;
try {
- LOG.debug("Blob ids to be deleted {}", ids);
- boolean deleted = blobStore.deleteChunks(ids, getLastMaxModifiedTime(maxModified));
- if (!deleted) {
+ LOG.trace("Blob ids to be deleted {}", ids);
+ deleted = blobStore.countDeleteChunks(ids, getLastMaxModifiedTime(maxModified));
+ if (deleted != ids.size()) {
// Only log and do not add to exception queue since some blobs may not match the
// lastMaxModifiedTime criteria.
- LOG.debug("Some blobs were not deleted from the batch : [{}]", ids);
+ LOG.debug("Some [{}] blobs were not deleted from the batch : [{}]", ids.size() - deleted, ids);
}
} catch (Exception e) {
LOG.warn("Error occurred while deleting blob with ids [{}]", ids, e);
exceptionQueue.addAll(ids);
}
+ return deleted;
}
/**
Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/cloud/CloudBlobStore.java Thu Aug 6 04:57:26 2015
@@ -221,19 +221,19 @@ public class CloudBlobStore extends Cach
}
@Override
- public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
Preconditions.checkNotNull(context);
-
+ long count = 0;
for (String chunkId : chunkIds) {
final org.jclouds.blobstore.BlobStore blobStore = context.getBlobStore();
StorageMetadata metadata = blobStore.blobMetadata(cloudContainer, chunkId);
if ((maxLastModifiedTime <= 0)
|| (metadata.getLastModified().getTime() <= maxLastModifiedTime)) {
blobStore.removeBlob(cloudContainer, chunkId);
- return true;
+ count++;
}
}
- return true;
+ return count;
}
class CloudStoreIterator implements Iterator<String> {
Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/blob/datastore/DataStoreBlobStore.java Thu Aug 6 04:57:26 2015
@@ -378,6 +378,12 @@ public class DataStoreBlobStore implemen
@Override
public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ return (chunkIds.size() == countDeleteChunks(chunkIds, maxLastModifiedTime));
+ }
+
+ @Override
+ public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ int count = 0;
if (delegate instanceof MultiDataStoreAware) {
for (String chunkId : chunkIds) {
String blobId = extractBlobId(chunkId);
@@ -385,15 +391,16 @@ public class DataStoreBlobStore implemen
DataRecord dataRecord = delegate.getRecord(identifier);
boolean success = (maxLastModifiedTime <= 0)
|| dataRecord.getLastModified() <= maxLastModifiedTime;
- log.debug("Deleting blob [{}] with last modified date [{}] : [{}]", blobId,
+ log.trace("Deleting blob [{}] with last modified date [{}] : [{}]", blobId,
dataRecord.getLastModified(), success);
if (success) {
((MultiDataStoreAware) delegate).deleteRecord(identifier);
- log.debug("Deleted blob [{}]", blobId);
+ log.trace("Deleted blob [{}]", blobId);
+ count++;
}
}
}
- return true;
+ return count;
}
@Override
Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoBlobStore.java Thu Aug 6 04:57:26 2015
@@ -205,7 +205,7 @@ public class MongoBlobStore extends Cach
}
@Override
- public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
DBCollection collection = getBlobCollection();
QueryBuilder queryBuilder = new QueryBuilder();
if (chunkIds != null) {
@@ -217,11 +217,7 @@ public class MongoBlobStore extends Cach
}
WriteResult result = collection.remove(queryBuilder.get());
- if (result.getN() == chunkIds.size()) {
- return true;
- }
-
- return false;
+ return result.getN();
}
@Override
Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/BlobCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/BlobCache.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/BlobCache.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/BlobCache.java Thu Aug 6 04:57:26 2015
@@ -161,6 +161,11 @@ public class BlobCache implements BlobSt
}
@Override
+ public long countDeleteChunks(List<String> arg0, long arg1) throws Exception {
+ return base.countDeleteChunks(arg0, arg1);
+ }
+
+ @Override
public Iterator<String> getAllChunkIds(long arg0) throws Exception {
return base.getAllChunkIds(arg0);
}
Modified: jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1694400&r1=1694399&r2=1694400&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/branches/1.2/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Thu Aug 6 04:57:26 2015
@@ -605,12 +605,12 @@ public class RDBBlobStore extends Cachin
}
@Override
- public boolean deleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
-
+ public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception {
+ long count = 0;
// sanity check
if (chunkIds.isEmpty()) {
// sanity check, nothing to do
- return true;
+ return count;
}
Connection con = this.ch.getRWConnection();
@@ -645,7 +645,7 @@ public class RDBBlobStore extends Cachin
prepData.setString(idx + 1, chunkIds.get(idx));
}
- prepMeta.execute();
+ count = prepMeta.executeUpdate();
prepData.execute();
prepMeta.close();
prepMeta = null;
@@ -658,7 +658,7 @@ public class RDBBlobStore extends Cachin
this.ch.closeConnection(con);
}
- return true;
+ return count;
}
@Override