Search in sources :

Example 6 with ByRef

use of org.infinispan.commons.util.ByRef in project hibernate-orm by hibernate.

the class ReadWriteTest method testAddNewOneToManyElementInitFlushLeaveCacheConsistent.

@Test
@TestForIssue(jiraKey = "HHH-9231")
public void testAddNewOneToManyElementInitFlushLeaveCacheConsistent() throws Exception {
    Statistics stats = sessionFactory().getStatistics();
    stats.clear();
    SecondLevelCacheStatistics cStats = stats.getSecondLevelCacheStatistics(Item.class.getName() + ".items");
    ByRef<Long> itemId = new ByRef<>(null);
    saveItem(itemId);
    // create an element for item.itsms
    Item itemElement = new Item();
    itemElement.setName("element");
    itemElement.setDescription("element item");
    withTxSession(s -> {
        Item item = s.get(Item.class, itemId.get());
        assertFalse(Hibernate.isInitialized(item.getItems()));
        item.addItem(itemElement);
        assertTrue(Hibernate.isInitialized(item.getItems()));
        s.persist(itemElement);
        s.flush();
        markRollbackOnly(s);
    });
    withTxSession(s -> {
        Item item = s.get(Item.class, itemId.get());
        Hibernate.initialize(item.getItems());
        assertTrue(item.getItems().isEmpty());
        s.delete(item);
    });
}
Also used : VersionedItem(org.hibernate.test.cache.infinispan.functional.entities.VersionedItem) Item(org.hibernate.test.cache.infinispan.functional.entities.Item) OtherItem(org.hibernate.test.cache.infinispan.functional.entities.OtherItem) ByRef(org.infinispan.commons.util.ByRef) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Statistics(org.hibernate.stat.Statistics) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 7 with ByRef

use of org.infinispan.commons.util.ByRef in project hibernate-orm by hibernate.

the class ReadWriteTest method testAddNewOneToManyElementNoInitFlushLeaveCacheConsistent.

@Test
@TestForIssue(jiraKey = "HHH-9231")
public void testAddNewOneToManyElementNoInitFlushLeaveCacheConsistent() throws Exception {
    Statistics stats = sessionFactory().getStatistics();
    stats.clear();
    SecondLevelCacheStatistics cStats = stats.getSecondLevelCacheStatistics(Item.class.getName() + ".items");
    ByRef<Long> itemId = new ByRef<>(null);
    saveItem(itemId);
    // create an element for item.bagOfItems
    Item itemElement = new Item();
    itemElement.setName("element");
    itemElement.setDescription("element item");
    withTxSession(s -> {
        Item item = s.get(Item.class, itemId.get());
        assertFalse(Hibernate.isInitialized(item.getItems()));
        item.addItemToBag(itemElement);
        assertFalse(Hibernate.isInitialized(item.getBagOfItems()));
        s.persist(itemElement);
        s.flush();
        markRollbackOnly(s);
    });
    withTxSession(s -> {
        Item item = s.get(Item.class, itemId.get());
        Hibernate.initialize(item.getItems());
        assertTrue(item.getItems().isEmpty());
        s.delete(item);
    });
}
Also used : VersionedItem(org.hibernate.test.cache.infinispan.functional.entities.VersionedItem) Item(org.hibernate.test.cache.infinispan.functional.entities.Item) OtherItem(org.hibernate.test.cache.infinispan.functional.entities.OtherItem) ByRef(org.infinispan.commons.util.ByRef) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Statistics(org.hibernate.stat.Statistics) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 8 with ByRef

use of org.infinispan.commons.util.ByRef in project hibernate-orm by hibernate.

the class ReadWriteTest method testStaleWritesLeaveCacheConsistent.

@Test
public void testStaleWritesLeaveCacheConsistent() throws Exception {
    Statistics stats = sessionFactory().getStatistics();
    stats.clear();
    ByRef<VersionedItem> itemRef = new ByRef<>(null);
    withTxSession(s -> {
        VersionedItem item = new VersionedItem();
        item.setName("steve");
        item.setDescription("steve's item");
        s.save(item);
        itemRef.set(item);
    });
    final VersionedItem item = itemRef.get();
    Long initialVersion = item.getVersion();
    // manually revert the version property
    item.setVersion(new Long(item.getVersion().longValue() - 1));
    try {
        withTxSession(s -> s.update(item));
        fail("expected stale write to fail");
    } catch (Exception e) {
        log.debug("Rollback was expected", e);
    }
    // check the version value in the cache...
    SecondLevelCacheStatistics slcs = stats.getSecondLevelCacheStatistics(VersionedItem.class.getName());
    Object entry = slcs.getEntries().get(item.getId());
    Long cachedVersionValue;
    cachedVersionValue = (Long) ((CacheEntry) entry).getVersion();
    assertEquals(initialVersion.longValue(), cachedVersionValue.longValue());
    withTxSession(s -> {
        VersionedItem item2 = s.load(VersionedItem.class, item.getId());
        s.delete(item2);
    });
}
Also used : VersionedItem(org.hibernate.test.cache.infinispan.functional.entities.VersionedItem) ByRef(org.infinispan.commons.util.ByRef) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) CacheEntry(org.hibernate.cache.spi.entry.CacheEntry) Statistics(org.hibernate.stat.Statistics) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Test(org.junit.Test)

Example 9 with ByRef

use of org.infinispan.commons.util.ByRef in project hibernate-orm by hibernate.

the class ReadWriteTest method testPersistEntityFlushEvictGetRollbackNotInEntityCache.

@Test
@TestForIssue(jiraKey = "HHH-5690")
public void testPersistEntityFlushEvictGetRollbackNotInEntityCache() throws Exception {
    Statistics stats = sessionFactory().getStatistics();
    stats.clear();
    SecondLevelCacheStatistics slcs = stats.getSecondLevelCacheStatistics(Item.class.getName());
    ByRef<Long> itemId = new ByRef<>(null);
    withTxSession(s -> {
        Item item = new Item();
        item.setName("steve");
        item.setDescription("steve's item");
        s.persist(item);
        s.flush();
        itemId.set(item.getId());
        s.evict(item);
        assertEquals(slcs.getHitCount(), 0);
        item = s.get(Item.class, item.getId());
        assertNotNull(item);
        markRollbackOnly(s);
    });
    // item should not be in entity cache.
    //slcs = stats.getSecondLevelCacheStatistics( Item.class.getName() );
    assertEquals(Collections.EMPTY_MAP, slcs.getEntries());
    withTxSession(s -> {
        Item item = s.get(Item.class, itemId.get());
        assertNull(item);
    });
}
Also used : VersionedItem(org.hibernate.test.cache.infinispan.functional.entities.VersionedItem) Item(org.hibernate.test.cache.infinispan.functional.entities.Item) OtherItem(org.hibernate.test.cache.infinispan.functional.entities.OtherItem) ByRef(org.infinispan.commons.util.ByRef) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Statistics(org.hibernate.stat.Statistics) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 10 with ByRef

use of org.infinispan.commons.util.ByRef in project hibernate-orm by hibernate.

the class ReadWriteTest method testPersistEntityFlushRollbackNotInEntityCache.

@Test
@TestForIssue(jiraKey = "HHH-5690")
public void testPersistEntityFlushRollbackNotInEntityCache() throws Exception {
    Statistics stats = sessionFactory().getStatistics();
    stats.clear();
    SecondLevelCacheStatistics slcs = stats.getSecondLevelCacheStatistics(Item.class.getName());
    ByRef<Long> itemId = new ByRef<>(null);
    withTxSession(s -> {
        Item item = new Item();
        item.setName("steve");
        item.setDescription("steve's item");
        s.persist(item);
        s.flush();
        itemId.set(item.getId());
        markRollbackOnly(s);
    });
    // item should not be in entity cache.
    assertEquals(Collections.EMPTY_MAP, slcs.getEntries());
    withTxSession(s -> {
        Item item = s.get(Item.class, itemId.get());
        assertNull(item);
    });
}
Also used : VersionedItem(org.hibernate.test.cache.infinispan.functional.entities.VersionedItem) Item(org.hibernate.test.cache.infinispan.functional.entities.Item) OtherItem(org.hibernate.test.cache.infinispan.functional.entities.OtherItem) ByRef(org.infinispan.commons.util.ByRef) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Statistics(org.hibernate.stat.Statistics) SecondLevelCacheStatistics(org.hibernate.stat.SecondLevelCacheStatistics) Test(org.junit.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Aggregations

ByRef (org.infinispan.commons.util.ByRef)10 Test (org.junit.Test)10 Item (org.hibernate.test.cache.infinispan.functional.entities.Item)9 OtherItem (org.hibernate.test.cache.infinispan.functional.entities.OtherItem)9 SecondLevelCacheStatistics (org.hibernate.stat.SecondLevelCacheStatistics)8 Statistics (org.hibernate.stat.Statistics)8 VersionedItem (org.hibernate.test.cache.infinispan.functional.entities.VersionedItem)8 TestForIssue (org.hibernate.testing.TestForIssue)4 CacheEntry (org.hibernate.cache.spi.entry.CacheEntry)2 Serializable (java.io.Serializable)1 Arrays (java.util.Arrays)1 Collections (java.util.Collections)1 List (java.util.List)1 Map (java.util.Map)1 Set (java.util.Set)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 CyclicBarrier (java.util.concurrent.CyclicBarrier)1 Future (java.util.concurrent.Future)1 TimeUnit (java.util.concurrent.TimeUnit)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1