org.openspaces.persistency.cassandra.archive
Class CassandraArchiveOperationHandler
java.lang.Object
org.openspaces.persistency.cassandra.archive.CassandraArchiveOperationHandler
- All Implemented Interfaces:
- ArchiveOperationHandler
public class CassandraArchiveOperationHandler
- extends Object
- implements ArchiveOperationHandler
Known Limitation:
1. The archiver must not write two different entries with the same ID.
This would corrupt the entry in Cassandra.
2. Only Space Documents are supported
3. The archiver is thread safe
4. The archiver is idempotent as long as there are no two threads that are writing two different objects with the same space id.
- Since:
- 9.1.1
- Author:
- Dan Kilman
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CassandraArchiveOperationHandler
public CassandraArchiveOperationHandler()
setGigaSpace
public void setGigaSpace(GigaSpace gigaSpace)
setHosts
public void setHosts(String hosts)
- Parameters:
hosts
- -
Comma separated list of Cassandra servers (ipaddresses or hostnames).- See Also:
HectorCassandraClientConfigurer.hosts(String)
setPort
public void setPort(Integer port)
- Parameters:
port
- -
Cassandra server ports. Assumes same port for all servers.
null means default port is used.- See Also:
HectorCassandraClientConfigurer.port(Integer)
setKeyspace
public void setKeyspace(String keyspace)
- Parameters:
keyspace
- - the Cassandra keyspace name to connect to.- See Also:
HectorCassandraClientConfigurer.keyspaceName(String)
setWriteConsistency
public void setWriteConsistency(CassandraConsistencyLevel writeConsistency)
- Parameters:
writeConsistency
- - defines the consistency level used when writing to Cassandra.
default is null (which is mapped to CassandraConsistencyLevel.QUORUM
)- See Also:
HectorCassandraClientConfigurer.writeConsistencyLevel(CassandraConsistencyLevel)
setPropertyValueSerializer
public void setPropertyValueSerializer(PropertyValueSerializer propertyValueSerializer)
- See Also:
PropertyValueSerializer
setFlattenedPropertiesFilter
public void setFlattenedPropertiesFilter(FlattenedPropertiesFilter flattenedPropertiesFilter)
- See Also:
FlattenedPropertiesFilter
setColumnFamilyNameConverter
public void setColumnFamilyNameConverter(ColumnFamilyNameConverter columnFamilyNameConverter)
- See Also:
ColumnFamilyNameConverter
getGigaSpace
public GigaSpace getGigaSpace()
getPropertyValueSerializer
public PropertyValueSerializer getPropertyValueSerializer()
getFlattenedPropertiesFilter
public FlattenedPropertiesFilter getFlattenedPropertiesFilter()
getColumnFamilyNameConverter
public ColumnFamilyNameConverter getColumnFamilyNameConverter()
getHosts
public String getHosts()
getPort
public Integer getPort()
getKeyspace
public String getKeyspace()
getWriteConsistency
public CassandraConsistencyLevel getWriteConsistency()
afterPropertiesSet
@PostConstruct
public void afterPropertiesSet()
destroy
@PreDestroy
public void destroy()
archive
public void archive(Object... objects)
- Description copied from interface:
ArchiveOperationHandler
- Writes the specified objects to the external storage
- Specified by:
archive
in interface ArchiveOperationHandler
- Parameters:
objects
- - one or more objects to write. If not ArchiveOperationHandler.supportsBatchArchiving()
then only one object is passed at a time.
- Throws:
SpaceCassandraException
- - Problem encountered while archiving to cassandra- See Also:
ArchiveOperationHandler.archive(Object...)
supportsBatchArchiving
public boolean supportsBatchArchiving()
- Description copied from interface:
ArchiveOperationHandler
- What happens when the archive operation receives a batch of objects to persist and throws an exception in the middle of the archiving?
The external archive container (assuming the exception is not swollen with an exception handler) will retry archiving all objects.
If the archive operation implementation is atomic (meaning that throwing an exception cancels all writes - all or nothing) then return true.
If the archive operation implementation is idempotent (meaning that writing the same objects twice has no visibility on the result) then return true.
Otherwise return false, so the archive method is called one object at a time.
Even when returning false, there is a possibility of an object being archived twice in case of a process fail-over.
- Specified by:
supportsBatchArchiving
in interface ArchiveOperationHandler
- Returns:
- true -
Since Multiple archiving of the exact same objects is supported (idempotent).
- See Also:
ArchiveOperationHandler.supportsBatchArchiving()
Copyright © GigaSpaces.