*USE CASE *- use IgniteAtomicLong for table sequence generation (may not be correct approach in a distributed environment).
*Ignite Server *(start Ignite as server mode) - apache-ignite-2.8.0.20190215 daily build *Ignite Service* (start Ignite as client mode) - use Ignite Spring to initialize the sequence, see code snippet below. *code snippet* IgniteAtomicLong userSeq; @Autowired UserRepository userRepository; @Autowired Ignite igniteInstance; @PostConstruct @Override public void initSequence() { Long maxId = userRepository.getMaxId(); if (maxId == null) { maxId = 0L; } LOG.info("Max User id: {}", maxId); userSeq = igniteInstance.atomicLong("userSeq", maxId, true); userSeq.getAndSet(maxId); } @Override public Long getNextSequence() { return userSeq.incrementAndGet(); } *Exception* This code works well until the Ignite Server restarted (Ignite Service was not restarted). It raised "Sequence was removed from cache" after Ignite Server node restarted. 020-08-11 16:14:46 [http-nio-8282-exec-3] ERROR c.p.c.p.service.PersistenceService - Error while saving entity: java.lang.IllegalStateException: Sequence was removed from cache: userSeq at org.apache.ignite.internal.processors.datastructures.AtomicDataStructureProxy.removedError(AtomicDataStructureProxy.java:145) at org.apache.ignite.internal.processors.datastructures.AtomicDataStructureProxy.checkRemoved(AtomicDataStructureProxy.java:116) at org.apache.ignite.internal.processors.datastructures.GridCacheAtomicLongImpl.incrementAndGet(GridCacheAtomicLongImpl.java:94) *Tried to reinitialize when the server node is down. But raises another exception - "cannot start/stop cache within lock or transaction"* How to solve such issues? Any suggestions are appreciated. @Override public Long getNextSequence() { if (useSeq == null || userSeq.removed()) { initSeqence(); } return userSeq.incrementAndGet(); } -- Sent from: http://apache-ignite-users.70518.x6.nabble.com/