public void delete(long procId) { delete(null, procId); }
public void delete(final long[] procIds) { Arrays.sort(procIds); BitSetNode node = null; for (int i = 0; i < procIds.length; ++i) { node = delete(node, procIds[i]); } }
private void updateStoreTracker(final PushType type, final long procId, final long[] subProcIds) { switch (type) { case INSERT: if (subProcIds == null) { storeTracker.insert(procId); } else if (procId == Procedure.NO_PROC_ID) { storeTracker.insert(subProcIds); } else { storeTracker.insert(procId, subProcIds); holdingCleanupTracker.setDeletedIfModified(procId); } break; case UPDATE: storeTracker.update(procId); holdingCleanupTracker.setDeletedIfModified(procId); break; case DELETE: if (subProcIds != null && subProcIds.length > 0) { storeTracker.delete(subProcIds); holdingCleanupTracker.setDeletedIfModified(subProcIds); } else { storeTracker.delete(procId); holdingCleanupTracker.setDeletedIfModified(procId); } break; default: throw new RuntimeException("invalid push type " + type); } }
@Test public void testGetActiveProcIds() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); for (int i = 0; i < 10000; i++) { tracker.insert(i * 10); } for (int i = 0; i < 10000; i += 2) { tracker.delete(i * 10); } long[] activeProcIds = tracker.getAllActiveProcIds(); assertEquals(5000, activeProcIds.length); for (int i = 0; i < 5000; i++) { assertEquals((2 * i + 1) * 10, activeProcIds[i]); } }
@Test public void testGetActiveMinProcId() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); for (int i = 100; i < 1000; i = 2 * i + 1) { tracker.insert(i); } for (int i = 100; i < 1000; i = 2 * i + 1) { assertEquals(i, tracker.getActiveMinProcId()); tracker.delete(i); } assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); } }
tracker.delete(i);
@Test public void testBasicCRUD() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertTrue(tracker.isEmpty()); long[] procs = new long[] { 1, 2, 3, 4, 5, 6 }; tracker.insert(procs[0]); tracker.insert(procs[1], new long[] { procs[2], procs[3], procs[4] }); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); tracker.resetModified(); assertFalse(tracker.isAllModified()); for (int i = 0; i < 4; ++i) { tracker.update(procs[i]); assertFalse(tracker.isEmpty()); assertFalse(tracker.isAllModified()); } tracker.update(procs[4]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); tracker.update(procs[5]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); for (int i = 0; i < 5; ++i) { tracker.delete(procs[i]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); } tracker.delete(procs[5]); assertTrue(tracker.isEmpty()); }
public void delete(long procId) { delete(null, procId); }
public void delete(long procId) { delete(null, procId); }
public void delete(final long[] procIds) { Arrays.sort(procIds); BitSetNode node = null; for (int i = 0; i < procIds.length; ++i) { node = delete(node, procIds[i]); } }
public void delete(final long[] procIds) { Arrays.sort(procIds); BitSetNode node = null; for (int i = 0; i < procIds.length; ++i) { node = delete(node, procIds[i]); } }
private void updateStoreTracker(final PushType type, final long procId, final long[] subProcIds) { switch (type) { case INSERT: if (subProcIds == null) { storeTracker.insert(procId); } else { storeTracker.insert(procId, subProcIds); } break; case UPDATE: storeTracker.update(procId); break; case DELETE: storeTracker.delete(procId); break; default: throw new RuntimeException("invalid push type " + type); } }
private void updateStoreTracker(final PushType type, final long procId, final long[] subProcIds) { switch (type) { case INSERT: if (subProcIds == null) { storeTracker.insert(procId); } else if (procId == Procedure.NO_PROC_ID) { storeTracker.insert(subProcIds); } else { storeTracker.insert(procId, subProcIds); holdingCleanupTracker.setDeletedIfSet(procId); } break; case UPDATE: storeTracker.update(procId); holdingCleanupTracker.setDeletedIfSet(procId); break; case DELETE: if (subProcIds != null && subProcIds.length > 0) { storeTracker.delete(subProcIds); holdingCleanupTracker.setDeletedIfSet(subProcIds); } else { storeTracker.delete(procId); holdingCleanupTracker.setDeletedIfSet(procId); } break; default: throw new RuntimeException("invalid push type " + type); } }
private void updateStoreTracker(final PushType type, final long procId, final long[] subProcIds) { switch (type) { case INSERT: if (subProcIds == null) { storeTracker.insert(procId); } else if (procId == Procedure.NO_PROC_ID) { storeTracker.insert(subProcIds); } else { storeTracker.insert(procId, subProcIds); holdingCleanupTracker.setDeletedIfModified(procId); } break; case UPDATE: storeTracker.update(procId); holdingCleanupTracker.setDeletedIfModified(procId); break; case DELETE: if (subProcIds != null && subProcIds.length > 0) { storeTracker.delete(subProcIds); holdingCleanupTracker.setDeletedIfModified(subProcIds); } else { storeTracker.delete(procId); holdingCleanupTracker.setDeletedIfModified(procId); } break; default: throw new RuntimeException("invalid push type " + type); } }
/** * @param active list of active proc ids. To mark them as non-deleted, since by default a proc * id is always marked deleted. */ ProcedureStoreTracker buildTracker(long[] active, long[] updated, long[] deleted) { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); for (long i : active) { tracker.insert(i); } tracker.resetUpdates(); for (long i : updated) { tracker.update(i); } for (long i : deleted) { tracker.delete(i); } return tracker; }
@Test public void testGetActiveProcIds() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); for (int i = 0; i < 10000; i++) { tracker.insert(i * 10); } for (int i = 0; i < 10000; i += 2) { tracker.delete(i * 10); } long[] activeProcIds = tracker.getAllActiveProcIds(); assertEquals(5000, activeProcIds.length); for (int i = 0; i < 5000; i++) { assertEquals((2 * i + 1) * 10, activeProcIds[i]); } }
@Test public void testGetActiveMinProcId() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); for (int i = 100; i < 1000; i = 2 * i + 1) { tracker.insert(i); } for (int i = 100; i < 1000; i = 2 * i + 1) { assertEquals(i, tracker.getActiveMinProcId()); tracker.delete(i); } assertEquals(Procedure.NO_PROC_ID, tracker.getActiveMinProcId()); } }
tracker.delete(i);
@Test public void testBasicCRUD() { ProcedureStoreTracker tracker = new ProcedureStoreTracker(); assertTrue(tracker.isEmpty()); long[] procs = new long[] { 1, 2, 3, 4, 5, 6 }; tracker.insert(procs[0]); tracker.insert(procs[1], new long[] { procs[2], procs[3], procs[4] }); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); tracker.resetModified(); assertFalse(tracker.isAllModified()); for (int i = 0; i < 4; ++i) { tracker.update(procs[i]); assertFalse(tracker.isEmpty()); assertFalse(tracker.isAllModified()); } tracker.update(procs[4]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); tracker.update(procs[5]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); for (int i = 0; i < 5; ++i) { tracker.delete(procs[i]); assertFalse(tracker.isEmpty()); assertTrue(tracker.isAllModified()); } tracker.delete(procs[5]); assertTrue(tracker.isEmpty()); }