use of org.apache.ignite.cache.store.CacheStore in project ignite by apache.
the class GridCacheColocatedDebugTest method clearStores.
/**
* Clears all stores.
*
* @param cnt Grid count.
*/
private void clearStores(int cnt) {
for (int i = 0; i < cnt; i++) {
IgniteEx grid = grid(i);
String cacheName = grid.configuration().getCacheConfiguration()[1].getName();
GridCacheContext ctx = grid.context().cache().internalCache(cacheName).context();
CacheStore store = ctx.store().configuredStore();
((GridCacheTestStore) store).reset();
}
}
use of org.apache.ignite.cache.store.CacheStore in project ignite by apache.
the class GridCacheEvictionTouchSelfTest method getConfiguration.
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
MvccFeatureChecker.skipIfNotSupported(MvccFeatureChecker.Feature.CACHE_STORE);
IgniteConfiguration c = super.getConfiguration(igniteInstanceName);
TransactionConfiguration txCfg = c.getTransactionConfiguration();
txCfg.setDefaultTxConcurrency(PESSIMISTIC);
txCfg.setDefaultTxIsolation(REPEATABLE_READ);
CacheConfiguration cc = defaultCacheConfiguration();
cc.setCacheMode(REPLICATED);
cc.setWriteSynchronizationMode(FULL_SYNC);
cc.setEvictionPolicy(plc);
cc.setOnheapCacheEnabled(true);
CacheStore store = new GridCacheGenericTestStore<Object, Object>() {
@Override
public Object load(Object key) {
return key;
}
@Override
public Map<Object, Object> loadAll(Iterable<?> keys) {
Map<Object, Object> loaded = new HashMap<>();
for (Object key : keys) loaded.put(key, key);
return loaded;
}
};
cc.setCacheStoreFactory(singletonFactory(store));
cc.setReadThrough(true);
cc.setWriteThrough(true);
cc.setLoadPreviousValue(true);
c.setCacheConfiguration(cc);
return c;
}
use of org.apache.ignite.cache.store.CacheStore in project gridgain by gridgain.
the class ClientAbstractSelfTest method cacheConfiguration.
/**
* @param cacheName Cache name.
* @return Cache configuration.
* @throws Exception In case of error.
*/
@SuppressWarnings("unchecked")
private static CacheConfiguration cacheConfiguration(@NotNull final String cacheName) throws Exception {
CacheConfiguration cfg = defaultCacheConfiguration();
cfg.setCacheMode(DEFAULT_CACHE_NAME.equals(cacheName) || CACHE_NAME.equals(cacheName) ? LOCAL : "replicated".equals(cacheName) ? REPLICATED : PARTITIONED);
cfg.setName(cacheName);
cfg.setWriteSynchronizationMode(FULL_SYNC);
cfg.setCacheStoreFactory(new Factory<CacheStore>() {
@Override
public CacheStore create() {
synchronized (cacheStores) {
HashMapStore cacheStore = cacheStores.get(cacheName);
if (cacheStore == null)
cacheStores.put(cacheName, cacheStore = new HashMapStore());
return cacheStore;
}
}
});
cfg.setWriteThrough(true);
cfg.setReadThrough(true);
cfg.setLoadPreviousValue(true);
if (cfg.getCacheMode() == PARTITIONED)
cfg.setBackups(1);
return cfg;
}
use of org.apache.ignite.cache.store.CacheStore in project gridgain by gridgain.
the class GridCacheStoreManagerAdapter method initialize.
/**
* {@inheritDoc}
*/
@SuppressWarnings("unchecked")
@Override
public void initialize(@Nullable CacheStore cfgStore, Map sesHolders) throws IgniteCheckedException {
GridKernalContext ctx = igniteContext();
CacheConfiguration cfg = cacheConfiguration();
writeThrough = cfg.isWriteThrough();
readThrough = cfg.isReadThrough();
this.cfgStore = cfgStore;
store = cacheStoreWrapper(ctx, cfgStore, cfg);
singleThreadGate = store == null ? null : new CacheStoreBalancingWrapper<>(store, cfg.getStoreConcurrentLoadAllThreshold());
ThreadLocal<SessionData> sesHolder0 = null;
if (cfgStore != null) {
sesHolder0 = ((Map<CacheStore, ThreadLocal>) sesHolders).get(cfgStore);
if (sesHolder0 == null) {
sesHolder0 = new ThreadLocal<>();
locSes = new ThreadLocalSession(sesHolder0);
if (ctx.resource().injectStoreSession(cfgStore, locSes))
sesHolders.put(cfgStore, sesHolder0);
} else
locSes = new ThreadLocalSession(sesHolder0);
}
sesHolder = sesHolder0;
locStore = U.hasAnnotation(cfgStore, CacheLocalStore.class);
if (cfgStore instanceof CacheJdbcPojoStore)
alwaysKeepBinary = true;
}
use of org.apache.ignite.cache.store.CacheStore in project gridgain by gridgain.
the class CassandraDirectPersistenceTest method pojoStrategyTransactionTest.
/**
*/
@Test
@SuppressWarnings("unchecked")
public void pojoStrategyTransactionTest() {
Map<Object, Object> sessionProps = U.newHashMap(1);
Transaction sessionTx = new TestTransaction();
CacheStore productStore = CacheStoreHelper.createCacheStore("product", new ClassPathResource("org/apache/ignite/tests/persistence/pojo/product.xml"), CassandraHelper.getAdminDataSrc(), new TestCacheSession("product", sessionTx, sessionProps));
CacheStore orderStore = CacheStoreHelper.createCacheStore("order", new ClassPathResource("org/apache/ignite/tests/persistence/pojo/order.xml"), CassandraHelper.getAdminDataSrc(), new TestCacheSession("order", sessionTx, sessionProps));
List<CacheEntryImpl<Long, Product>> productEntries = TestsHelper.generateProductEntries();
Map<Long, List<CacheEntryImpl<Long, ProductOrder>>> ordersPerProduct = TestsHelper.generateOrdersPerProductEntries(productEntries, 2);
Collection<Long> productIds = TestsHelper.getProductIds(productEntries);
Collection<Long> orderIds = TestsHelper.getOrderIds(ordersPerProduct);
LOGGER.info("Running POJO strategy transaction write tests");
LOGGER.info("Running single write operation tests");
CassandraHelper.dropTestKeyspaces();
Product product = productEntries.iterator().next().getValue();
ProductOrder order = ordersPerProduct.get(product.getId()).iterator().next().getValue();
productStore.write(productEntries.iterator().next());
orderStore.write(ordersPerProduct.get(product.getId()).iterator().next());
if (productStore.load(product.getId()) != null || orderStore.load(order.getId()) != null) {
throw new RuntimeException("Single write operation test failed. Transaction wasn't committed yet, but " + "objects were already persisted into Cassandra");
}
Map<Long, Product> products = (Map<Long, Product>) productStore.loadAll(productIds);
Map<Long, ProductOrder> orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if ((products != null && !products.isEmpty()) || (orders != null && !orders.isEmpty())) {
throw new RuntimeException("Single write operation test failed. Transaction wasn't committed yet, but " + "objects were already persisted into Cassandra");
}
// noinspection deprecation
orderStore.sessionEnd(true);
// noinspection deprecation
productStore.sessionEnd(true);
Product product1 = (Product) productStore.load(product.getId());
ProductOrder order1 = (ProductOrder) orderStore.load(order.getId());
if (product1 == null || order1 == null) {
throw new RuntimeException("Single write operation test failed. Transaction was committed, but " + "no objects were persisted into Cassandra");
}
if (!product.equals(product1) || !order.equals(order1)) {
throw new RuntimeException("Single write operation test failed. Transaction was committed, but " + "objects were incorrectly persisted/loaded to/from Cassandra");
}
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if (products == null || products.isEmpty() || orders == null || orders.isEmpty()) {
throw new RuntimeException("Single write operation test failed. Transaction was committed, but " + "no objects were persisted into Cassandra");
}
if (products.size() > 1 || orders.size() > 1) {
throw new RuntimeException("Single write operation test failed. There were committed more objects " + "into Cassandra than expected");
}
product1 = products.entrySet().iterator().next().getValue();
order1 = orders.entrySet().iterator().next().getValue();
if (!product.equals(product1) || !order.equals(order1)) {
throw new RuntimeException("Single write operation test failed. Transaction was committed, but " + "objects were incorrectly persisted/loaded to/from Cassandra");
}
LOGGER.info("Single write operation tests passed");
LOGGER.info("Running bulk write operation tests");
CassandraHelper.dropTestKeyspaces();
sessionProps.clear();
productStore.writeAll(productEntries);
for (Long productId : ordersPerProduct.keySet()) orderStore.writeAll(ordersPerProduct.get(productId));
for (Long productId : productIds) {
if (productStore.load(productId) != null) {
throw new RuntimeException("Bulk write operation test failed. Transaction wasn't committed yet, but " + "objects were already persisted into Cassandra");
}
}
for (Long orderId : orderIds) {
if (orderStore.load(orderId) != null) {
throw new RuntimeException("Bulk write operation test failed. Transaction wasn't committed yet, but " + "objects were already persisted into Cassandra");
}
}
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if ((products != null && !products.isEmpty()) || (orders != null && !orders.isEmpty())) {
throw new RuntimeException("Bulk write operation test failed. Transaction wasn't committed yet, but " + "objects were already persisted into Cassandra");
}
// noinspection deprecation
productStore.sessionEnd(true);
// noinspection deprecation
orderStore.sessionEnd(true);
for (CacheEntryImpl<Long, Product> entry : productEntries) {
product = (Product) productStore.load(entry.getKey());
if (!entry.getValue().equals(product)) {
throw new RuntimeException("Bulk write operation test failed. Transaction was committed, but " + "not all objects were persisted into Cassandra");
}
}
for (Long productId : ordersPerProduct.keySet()) {
for (CacheEntryImpl<Long, ProductOrder> entry : ordersPerProduct.get(productId)) {
order = (ProductOrder) orderStore.load(entry.getKey());
if (!entry.getValue().equals(order)) {
throw new RuntimeException("Bulk write operation test failed. Transaction was committed, but " + "not all objects were persisted into Cassandra");
}
}
}
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if (products == null || products.isEmpty() || orders == null || orders.isEmpty()) {
throw new RuntimeException("Bulk write operation test failed. Transaction was committed, but " + "no objects were persisted into Cassandra");
}
if (products.size() < productIds.size() || orders.size() < orderIds.size()) {
throw new RuntimeException("Bulk write operation test failed. There were committed less objects " + "into Cassandra than expected");
}
if (products.size() > productIds.size() || orders.size() > orderIds.size()) {
throw new RuntimeException("Bulk write operation test failed. There were committed more objects " + "into Cassandra than expected");
}
for (CacheEntryImpl<Long, Product> entry : productEntries) {
product = products.get(entry.getKey());
if (!entry.getValue().equals(product)) {
throw new RuntimeException("Bulk write operation test failed. Transaction was committed, but " + "some objects were incorrectly persisted/loaded to/from Cassandra");
}
}
for (Long productId : ordersPerProduct.keySet()) {
for (CacheEntryImpl<Long, ProductOrder> entry : ordersPerProduct.get(productId)) {
order = orders.get(entry.getKey());
if (!entry.getValue().equals(order)) {
throw new RuntimeException("Bulk write operation test failed. Transaction was committed, but " + "some objects were incorrectly persisted/loaded to/from Cassandra");
}
}
}
LOGGER.info("Bulk write operation tests passed");
LOGGER.info("POJO strategy transaction write tests passed");
LOGGER.info("Running POJO strategy transaction delete tests");
LOGGER.info("Running single delete tests");
sessionProps.clear();
Product deletedProduct = productEntries.remove(0).getValue();
ProductOrder deletedOrder = ordersPerProduct.get(deletedProduct.getId()).remove(0).getValue();
productStore.delete(deletedProduct.getId());
orderStore.delete(deletedOrder.getId());
if (productStore.load(deletedProduct.getId()) == null || orderStore.load(deletedOrder.getId()) == null) {
throw new RuntimeException("Single delete operation test failed. Transaction wasn't committed yet, but " + "objects were already deleted from Cassandra");
}
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if (products.size() != productIds.size() || orders.size() != orderIds.size()) {
throw new RuntimeException("Single delete operation test failed. Transaction wasn't committed yet, but " + "objects were already deleted from Cassandra");
}
// noinspection deprecation
productStore.sessionEnd(true);
// noinspection deprecation
orderStore.sessionEnd(true);
if (productStore.load(deletedProduct.getId()) != null || orderStore.load(deletedOrder.getId()) != null) {
throw new RuntimeException("Single delete operation test failed. Transaction was committed, but " + "objects were not deleted from Cassandra");
}
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if (products.get(deletedProduct.getId()) != null || orders.get(deletedOrder.getId()) != null) {
throw new RuntimeException("Single delete operation test failed. Transaction was committed, but " + "objects were not deleted from Cassandra");
}
LOGGER.info("Single delete tests passed");
LOGGER.info("Running bulk delete tests");
sessionProps.clear();
productStore.deleteAll(productIds);
orderStore.deleteAll(orderIds);
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if (products == null || products.isEmpty() || orders == null || orders.isEmpty()) {
throw new RuntimeException("Bulk delete operation test failed. Transaction wasn't committed yet, but " + "objects were already deleted from Cassandra");
}
// noinspection deprecation
orderStore.sessionEnd(true);
// noinspection deprecation
productStore.sessionEnd(true);
products = (Map<Long, Product>) productStore.loadAll(productIds);
orders = (Map<Long, ProductOrder>) orderStore.loadAll(orderIds);
if ((products != null && !products.isEmpty()) || (orders != null && !orders.isEmpty())) {
throw new RuntimeException("Bulk delete operation test failed. Transaction was committed, but " + "objects were not deleted from Cassandra");
}
LOGGER.info("Bulk delete tests passed");
LOGGER.info("POJO strategy transaction delete tests passed");
}
Aggregations