Class CloudBlobStore
- java.lang.Object
-
- org.apache.jackrabbit.oak.spi.blob.AbstractBlobStore
-
- org.apache.jackrabbit.oak.plugins.blob.CachingBlobStore
-
- org.apache.jackrabbit.oak.plugins.blob.cloud.CloudBlobStore
-
- All Implemented Interfaces:
AutoCloseable
,Cache.Backend<AbstractBlobStore.BlockId,AbstractBlobStore.Data>
,BlobStore
,GarbageCollectableBlobStore
public class CloudBlobStore extends CachingBlobStore
Implementation of theBlobStore
to store blobs in a cloud blob store.Extends
AbstractBlobStore
and breaks the the binary to chunks for easier management.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.jackrabbit.oak.spi.blob.AbstractBlobStore
AbstractBlobStore.BlockId, AbstractBlobStore.Data
-
-
Field Summary
-
Fields inherited from class org.apache.jackrabbit.oak.plugins.blob.CachingBlobStore
blobCacheSize, cache, DEFAULT_CACHE_SIZE, MEM_CACHE_NAME
-
Fields inherited from class org.apache.jackrabbit.oak.spi.blob.AbstractBlobStore
BLOCK_SIZE_LIMIT, HASH_ALGORITHM, inUse, TYPE_DATA, TYPE_HASH
-
-
Constructor Summary
Constructors Constructor Description CloudBlobStore()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description long
countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime)
Deletes the blobs with the given ids.void
deleteBucket()
Delete the cloud container and all its contents.String
getAccessKey()
Iterator<String>
getAllChunkIds(long maxLastModifiedTime)
Gets all the identifiers.protected String
getCloudContainer()
String
getCloudProvider()
String
getSecretKey()
void
init()
Instantiates a connection to the cloud blob store.protected boolean
isMarkEnabled()
protected void
mark(AbstractBlobStore.BlockId id)
protected byte[]
readBlockFromBackend(AbstractBlobStore.BlockId blockId)
Reads the data from the actual cloud service.void
setAccessKey(String accessKey)
void
setCloudContainer(String cloudContainer)
void
setCloudProvider(String cloudProvider)
void
setSecretKey(String secretKey)
void
startMark()
Start the mark phase.protected void
storeBlock(byte[] digest, int level, byte[] data)
Uploads the block to the cloud service.int
sweep()
Remove all unused blocks.-
Methods inherited from class org.apache.jackrabbit.oak.plugins.blob.CachingBlobStore
clearCache, getBlobCacheSize, getCacheStats
-
Methods inherited from class org.apache.jackrabbit.oak.spi.blob.AbstractBlobStore
clearInUse, close, deleteChunks, getBlobId, getBlobLength, getBlockSize, getBlockSizeMin, getInputStream, getOrCreateReferenceKey, getReference, getStatsCollector, load, mark, markInUse, readBlob, resolveChunks, setBlockSize, setBlockSizeMin, setReferenceKey, setReferenceKeyEncoded, setReferenceKeyPlainText, setStatsCollector, usesBlobId, writeBlob, writeBlob, writeBlob
-
-
-
-
Method Detail
-
getCloudContainer
protected String getCloudContainer()
-
setCloudContainer
public void setCloudContainer(String cloudContainer)
-
getAccessKey
public String getAccessKey()
-
setAccessKey
public void setAccessKey(String accessKey)
-
getSecretKey
public String getSecretKey()
-
setSecretKey
public void setSecretKey(String secretKey)
-
getCloudProvider
public String getCloudProvider()
-
setCloudProvider
public void setCloudProvider(String cloudProvider)
-
init
public void init() throws Exception
Instantiates a connection to the cloud blob store.- Throws:
Exception
- if an error occurs
-
storeBlock
protected void storeBlock(byte[] digest, int level, byte[] data) throws IOException
Uploads the block to the cloud service.- Specified by:
storeBlock
in classAbstractBlobStore
- Parameters:
digest
- the content hash (32 bytes)level
- the indirection level (0 is for user data, 1 is a list of digests that point to user data, 2 is a list of digests that point to digests, and so on). This parameter is for informational use only, and it is not required to store it unless that's easy to achievedata
- the data to be stored (the number of bytes is at most the block size)- Throws:
IOException
-
readBlockFromBackend
protected byte[] readBlockFromBackend(AbstractBlobStore.BlockId blockId) throws Exception
Reads the data from the actual cloud service.- Specified by:
readBlockFromBackend
in classAbstractBlobStore
- Parameters:
blockId
- the block id- Returns:
- the block data, or null
- Throws:
Exception
-
deleteBucket
public void deleteBucket()
Delete the cloud container and all its contents.
-
startMark
public void startMark() throws IOException
Description copied from interface:GarbageCollectableBlobStore
Start the mark phase.- Specified by:
startMark
in interfaceGarbageCollectableBlobStore
- Specified by:
startMark
in classAbstractBlobStore
- Throws:
IOException
-
mark
protected void mark(AbstractBlobStore.BlockId id) throws Exception
- Specified by:
mark
in classAbstractBlobStore
- Throws:
Exception
-
sweep
public int sweep() throws IOException
Description copied from interface:GarbageCollectableBlobStore
Remove all unused blocks.- Specified by:
sweep
in interfaceGarbageCollectableBlobStore
- Specified by:
sweep
in classAbstractBlobStore
- Returns:
- the number of removed blocks
- Throws:
IOException
-
isMarkEnabled
protected boolean isMarkEnabled()
- Specified by:
isMarkEnabled
in classAbstractBlobStore
-
getAllChunkIds
public Iterator<String> getAllChunkIds(long maxLastModifiedTime) throws Exception
Description copied from interface:GarbageCollectableBlobStore
Gets all the identifiers.- Parameters:
maxLastModifiedTime
- the max last modified time to consider for retrieval, with the special value '0' meaning no filtering by time- Returns:
- the identifiers
- Throws:
Exception
- the exception
-
countDeleteChunks
public long countDeleteChunks(List<String> chunkIds, long maxLastModifiedTime) throws Exception
Description copied from interface:GarbageCollectableBlobStore
Deletes the blobs with the given ids.- Parameters:
chunkIds
- the chunk idsmaxLastModifiedTime
- the max last modified time to consider for retrieval, with the special value '0' meaning no filtering by time- Returns:
- long the count of successful deletions
- Throws:
Exception
- the exception
-
-