/** * Set the given bit for the procId to delete if it was modified before. * <p/> * This method is used to test whether a procedure wal file can be safely deleted, as if all the * procedures in the given procedure wal file has been modified in the new procedure wal files, * then we can delete it. */ public void setDeletedIfModified(long... procId) { BitSetNode node = null; for (int i = 0; i < procId.length; ++i) { node = lookupClosestNode(node, procId[i]); if (node != null && node.isModified(procId[i])) { node.delete(procId[i]); } } }
private void setDeleteIf(ProcedureStoreTracker tracker, BiFunction<BitSetNode, Long, Boolean> func) { BitSetNode trackerNode = null; for (BitSetNode node : map.values()) { long minProcId = node.getStart(); long maxProcId = node.getEnd(); for (long procId = minProcId; procId <= maxProcId; ++procId) { if (!node.isModified(procId)) { continue; } trackerNode = tracker.lookupClosestNode(trackerNode, procId); if (func.apply(trackerNode, procId)) { node.delete(procId); } } } }
private BitSetNode delete(BitSetNode node, long procId) { node = lookupClosestNode(node, procId); if (node == null || !node.contains(procId)) { LOG.warn("The BitSetNode for procId={} does not exist, maybe a double deletion?", procId); return node; } node.delete(procId); if (!keepDeletes && node.isEmpty()) { // TODO: RESET if (map.size() == 1) map.remove(node.getStart()); } trackProcIds(procId); return node; }
@Test public void testGetActiveMaxMinProcId() { BitSetNode node = new BitSetNode(5L, false); assertEquals(5L, node.getActiveMinProcId()); assertEquals(5L, node.getActiveMaxProcId()); node.insertOrUpdate(10L); assertEquals(5L, node.getActiveMinProcId()); assertEquals(10L, node.getActiveMaxProcId()); node.insertOrUpdate(1L); assertEquals(1L, node.getActiveMinProcId()); assertEquals(10L, node.getActiveMaxProcId()); node.delete(10L); assertEquals(1L, node.getActiveMinProcId()); assertEquals(5L, node.getActiveMaxProcId()); node.delete(1L); assertEquals(5L, node.getActiveMinProcId()); assertEquals(5L, node.getActiveMaxProcId()); node.delete(5L); assertEquals(Procedure.NO_PROC_ID, node.getActiveMinProcId()); assertEquals(Procedure.NO_PROC_ID, node.getActiveMaxProcId()); }
/** * Set the given bit for the procId to delete if it was modified before. * <p/> * This method is used to test whether a procedure wal file can be safely deleted, as if all the * procedures in the given procedure wal file has been modified in the new procedure wal files, * then we can delete it. */ public void setDeletedIfModified(long... procId) { BitSetNode node = null; for (int i = 0; i < procId.length; ++i) { node = lookupClosestNode(node, procId[i]); if (node != null && node.isModified(procId[i])) { node.delete(procId[i]); } } }
private void setDeleteIf(ProcedureStoreTracker tracker, BiFunction<BitSetNode, Long, Boolean> func) { BitSetNode trackerNode = null; for (BitSetNode node : map.values()) { long minProcId = node.getStart(); long maxProcId = node.getEnd(); for (long procId = minProcId; procId <= maxProcId; ++procId) { if (!node.isModified(procId)) { continue; } trackerNode = tracker.lookupClosestNode(trackerNode, procId); if (func.apply(trackerNode, procId)) { node.delete(procId); } } } }
private BitSetNode delete(BitSetNode node, long procId) { node = lookupClosestNode(node, procId); if (node == null || !node.contains(procId)) { LOG.warn("The BitSetNode for procId={} does not exist, maybe a double deletion?", procId); return node; } node.delete(procId); if (!keepDeletes && node.isEmpty()) { // TODO: RESET if (map.size() == 1) map.remove(node.getStart()); } trackProcIds(procId); return node; }
@Test public void testGetActiveMaxMinProcId() { BitSetNode node = new BitSetNode(5L, false); assertEquals(5L, node.getActiveMinProcId()); assertEquals(5L, node.getActiveMaxProcId()); node.insertOrUpdate(10L); assertEquals(5L, node.getActiveMinProcId()); assertEquals(10L, node.getActiveMaxProcId()); node.insertOrUpdate(1L); assertEquals(1L, node.getActiveMinProcId()); assertEquals(10L, node.getActiveMaxProcId()); node.delete(10L); assertEquals(1L, node.getActiveMinProcId()); assertEquals(5L, node.getActiveMaxProcId()); node.delete(1L); assertEquals(5L, node.getActiveMinProcId()); assertEquals(5L, node.getActiveMaxProcId()); node.delete(5L); assertEquals(Procedure.NO_PROC_ID, node.getActiveMinProcId()); assertEquals(Procedure.NO_PROC_ID, node.getActiveMaxProcId()); }