Hey, I get the following exception:
ODB-Line-Checker Exception: [ObjectDB 2.8.1] Unexpected exception (Error 990) Generated by OpenJDK 64-Bit Server VM 11.0.2 (on Linux 4.14.71). Please report this error on http://www.objectdb.com/issue/new com.objectdb.o.InternalException: java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 0 java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 0 at com.objectdb.o.UTY.L(UTY.java:1440) at com.objectdb.o.ENH.d(ENH.java:104) at com.objectdb.o.LDR.d(LDR.java:836) at com.objectdb.o.LDR.n(LDR.java:224) at com.objectdb.o.OBC.ab(OBC.java:1085) at com.objectdb.o.OBC.ai(OBC.java:990) at com.objectdb.o.OBC.Zy(OBC.java:800) at com.objectdb.o.SRB.a(SRB.java:162) at com.objectdb.o.QRR.h(QRR.java:565) at com.objectdb.o.QRR.i(QRR.java:225) at com.objectdb.jpa.JpaQuery.getResultList(JpaQuery.java:721) at backend.EventLogEntryService.only50000Rows(EventLogEntryService.java:283) at backend.EventLogEntryService.lambda$startLineChecker$0(EventLogEntryService.java:327) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:834)
With following code (Exception happens here: final List<EventLogPersistEntry> results = query.getResultList();) :
private void only50000Rows(EntityManager em) { synchronized (mutex) { final Query count = em.createQuery("SELECT COUNT(p) FROM EventLogPersistEntry p"); long rows = 0; try { rows = (long) count.getSingleResult(); } catch (final PersistenceException e) { return; } // remove all over 50000 if (rows > 55000) { final TypedQuery<EventLogPersistEntry> query = em.createQuery( "SELECT p FROM EventLogPersistEntry p ORDER BY p.id DESC", EventLogPersistEntry.class); query.setFirstResult(50000); final List<EventLogPersistEntry> results = query.getResultList(); final Query queryDelete = em .createQuery("DELETE FROM EventLogPersistEntry p WHERE p.id < :id"); em.getTransaction().begin(); final int deletedCount = queryDelete.setParameter("id", results.get(0).getId()) .executeUpdate(); em.getTransaction().commit(); } } }