Package org.gridgain.grid.kernal.processors.ggfs

Examples of org.gridgain.grid.kernal.processors.ggfs.GridGgfsFileAffinityRange


        assert !ranges.isEmpty();

        // Range binary search.
        int leftIdx = 0, rightIdx = ranges.size() - 1;

        GridGgfsFileAffinityRange leftRange = ranges.get(leftIdx);
        GridGgfsFileAffinityRange rightRange = ranges.get(rightIdx);

        // If block offset is less than start of first range, we don't have affinity key.
        if (leftRange.less(blockOff))
            return null;

        if (leftRange.belongs(blockOff))
            return leftRange.status() != RANGE_STATUS_MOVED ? leftRange.affinityKey() :
                includeMoved ? leftRange.affinityKey() : null;

        if (rightRange.greater(blockOff))
            return null;

        if (rightRange.belongs(blockOff))
            return rightRange.status() != RANGE_STATUS_MOVED ? rightRange.affinityKey() :
                includeMoved ? leftRange.affinityKey() : null;

        while (rightIdx - leftIdx > 1) {
            int midIdx = (leftIdx + rightIdx) / 2;

            GridGgfsFileAffinityRange midRange = ranges.get(midIdx);

            if (midRange.belongs(blockOff))
                return midRange.status() != RANGE_STATUS_MOVED ? midRange.affinityKey() :
                    includeMoved ? leftRange.affinityKey() : null;

            // If offset is less then block start, update right index.
            if (midRange.less(blockOff))
                rightIdx = midIdx;
            else {
                assert midRange.greater(blockOff);

                leftIdx = midIdx;
            }
        }
View Full Code Here


        assert !ranges.isEmpty();

        // Check last.
        int lastIdx = ranges.size() - 1;

        GridGgfsFileAffinityRange last = ranges.get(lastIdx);

        if (last.startOffset() == range.startOffset()) {
            updateRangeStatus0(lastIdx, last, range, status);

            return;
        }

        // Check first.
        int firstIdx = 0;

        GridGgfsFileAffinityRange first = ranges.get(firstIdx);

        if (first.startOffset() == range.startOffset()) {
            updateRangeStatus0(firstIdx, first, range, status);

            return;
        }

        // Binary search.
        while (lastIdx - firstIdx > 1) {
            int midIdx = (firstIdx + lastIdx) / 2;

            GridGgfsFileAffinityRange midRange = ranges.get(midIdx);

            if (midRange.startOffset() == range.startOffset()) {
                updateRangeStatus0(midIdx, midRange, range, status);

                return;
            }

            // If range we are looking for is less
            if (midRange.less(range.startOffset()))
                lastIdx = midIdx;
            else {
                assert midRange.greater(range.startOffset());

                firstIdx = midIdx;
            }
        }
View Full Code Here

        try {
            // Check last.
            int lastIdx = ranges.size() - 1;

            GridGgfsFileAffinityRange last = ranges.get(lastIdx);

            if (last.regionEqual(range)) {
                assert last.status() == RANGE_STATUS_MOVED;

                ranges.remove(last);

                return;
            }

            // Check first.
            int firstIdx = 0;

            GridGgfsFileAffinityRange first = ranges.get(firstIdx);

            if (first.regionEqual(range)) {
                assert first.status() == RANGE_STATUS_MOVED;

                ranges.remove(first);

                return;
            }

            // Binary search.
            while (lastIdx - firstIdx > 1) {
                int midIdx = (firstIdx + lastIdx) / 2;

                GridGgfsFileAffinityRange midRange = ranges.get(midIdx);

                if (midRange.regionEqual(range)) {
                    assert midRange.status() == RANGE_STATUS_MOVED;

                    ranges.remove(midIdx);

                    return;
                }

                // If range we are looking for is less
                if (midRange.less(range.startOffset()))
                    lastIdx = midIdx;
                else {
                    assert midRange.greater(range.startOffset());

                    firstIdx = midIdx;
                }
            }
        }
View Full Code Here

        int status) {
        assert F.eq(orig.affinityKey(), update.affinityKey());
        assert ranges.get(origIdx) == orig;

        if (orig.regionEqual(update))
            ranges.set(origIdx, new GridGgfsFileAffinityRange(update, status));
        else {
            // If range was expanded, new one should be larger.
            assert orig.endOffset() > update.endOffset();

            ranges.set(origIdx, new GridGgfsFileAffinityRange(update, status));
            ranges.add(origIdx + 1, new GridGgfsFileAffinityRange(update.endOffset() + 1, orig.endOffset(),
                orig.affinityKey()));
        }
    }
View Full Code Here

            return;
        }

        assert !ranges.isEmpty();

        GridGgfsFileAffinityRange last = ranges.get(ranges.size() - 1);

        // Ensure that range being added is located to the right of last range in list.
        assert last.greater(range.startOffset()) : "Cannot add range to middle of map [last=" + last +
            ", range=" + range + ']';

        // Try to concat last and new range.
        GridGgfsFileAffinityRange concat = last.concat(range);

        // Simply add range to the end of the list if they are not adjacent.
        if (concat == null)
            ranges.add(range);
        else
View Full Code Here

                assertEquals("For i: " + i, affKey, map.affinityKey(off1, false));
                assertEquals("For i: " + i, affKey, map.affinityKey(off2, false));
                assertEquals("For i: " + i, affKey, map.affinityKey(off3, false));
            }

            map.addRange(new GridGgfsFileAffinityRange(10 + 20 * numOfRanges, 19 + 20 * numOfRanges,
                affKeys[numOfRanges]));

            numOfRanges++;
        } while (numOfRanges < 20);
    }
View Full Code Here

    public void testAddUpdateAdd() throws Exception {
        GridGgfsFileMap map = new GridGgfsFileMap();

        GridUuid affKey = GridUuid.randomUuid();

        map.addRange(new GridGgfsFileAffinityRange(0, 9, affKey));

        map.updateRangeStatus(new GridGgfsFileAffinityRange(0, 9, affKey), RANGE_STATUS_MOVING);

        map.addRange(new GridGgfsFileAffinityRange(10, 19, affKey));

        List<GridGgfsFileAffinityRange> ranges = map.ranges();

        assertEquals(2, ranges.size());

        assertEquals(RANGE_STATUS_MOVING, ranges.get(0).status());
        assertTrue(ranges.get(0).regionEqual(new GridGgfsFileAffinityRange(0, 9, affKey)));

        assertEquals(RANGE_STATUS_INITIAL, ranges.get(1).status());
        assertTrue(ranges.get(1).regionEqual(new GridGgfsFileAffinityRange(10, 19, affKey)));
    }
View Full Code Here

        GridGgfsFileMap map = new GridGgfsFileMap();

        GridUuid affKey = GridUuid.randomUuid();

        for (int i = 0; i < 4; i++)
            map.addRange(new GridGgfsFileAffinityRange(i * 20 + 10, i * 20 + 19, affKey));

        // Middle, first, last.
        map.updateRangeStatus(new GridGgfsFileAffinityRange(30, 39, affKey), RANGE_STATUS_MOVING);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(10, 19, affKey), RANGE_STATUS_MOVING);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(70, 79, affKey), RANGE_STATUS_MOVING);

        List<GridGgfsFileAffinityRange> ranges = map.ranges();

        assertEquals(RANGE_STATUS_MOVING, ranges.get(0).status());
        assertEquals(RANGE_STATUS_MOVING, ranges.get(1).status());
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(2).status());
        assertEquals(RANGE_STATUS_MOVING, ranges.get(3).status());

        // Middle, first, last.
        map.updateRangeStatus(new GridGgfsFileAffinityRange(30, 39, affKey), RANGE_STATUS_MOVED);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(10, 19, affKey), RANGE_STATUS_MOVED);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(70, 79, affKey), RANGE_STATUS_MOVED);

        ranges = map.ranges();

        assertEquals(RANGE_STATUS_MOVED, ranges.get(0).status());
        assertEquals(RANGE_STATUS_MOVED, ranges.get(1).status());
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(2).status());
        assertEquals(RANGE_STATUS_MOVED, ranges.get(3).status());

        // Middle, first, last.
        map.deleteRange(new GridGgfsFileAffinityRange(30, 39, affKey));
        map.deleteRange(new GridGgfsFileAffinityRange(10, 19, affKey));
        map.deleteRange(new GridGgfsFileAffinityRange(70, 79, affKey));

        ranges = map.ranges();

        assertEquals(1, ranges.size());
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(0).status());
        assertTrue(ranges.get(0).regionEqual(new GridGgfsFileAffinityRange(50, 59, affKey)));
    }
View Full Code Here

        GridGgfsFileMap map = new GridGgfsFileMap();

        GridUuid affKey = GridUuid.randomUuid();

        for (int i = 0; i < 4; i++)
            map.addRange(new GridGgfsFileAffinityRange(i * 20 + 10, i * 20 + 19, affKey));

        // Middle, first, last.
        map.updateRangeStatus(new GridGgfsFileAffinityRange(30, 35, affKey), RANGE_STATUS_MOVING);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(10, 15, affKey), RANGE_STATUS_MOVING);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(70, 75, affKey), RANGE_STATUS_MOVING);

        List<GridGgfsFileAffinityRange> ranges = map.ranges();

        assertEquals(7, ranges.size());

        int idx = 0;
        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(10, 15, affKey)));
        assertEquals(RANGE_STATUS_MOVING, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(16, 19, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(30, 35, affKey)));
        assertEquals(RANGE_STATUS_MOVING, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(36, 39, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(50, 59, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(70, 75, affKey)));
        assertEquals(RANGE_STATUS_MOVING, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(76, 79, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());

        // Middle, first, last.
        map.updateRangeStatus(new GridGgfsFileAffinityRange(30, 35, affKey), RANGE_STATUS_MOVED);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(10, 15, affKey), RANGE_STATUS_MOVED);
        map.updateRangeStatus(new GridGgfsFileAffinityRange(70, 75, affKey), RANGE_STATUS_MOVED);

        idx = 0;
        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(10, 15, affKey)));
        assertEquals(RANGE_STATUS_MOVED, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(16, 19, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(30, 35, affKey)));
        assertEquals(RANGE_STATUS_MOVED, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(36, 39, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(50, 59, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(70, 75, affKey)));
        assertEquals(RANGE_STATUS_MOVED, ranges.get(idx).status());
        idx++;

        assertTrue(ranges.get(idx).regionEqual(new GridGgfsFileAffinityRange(76, 79, affKey)));
        assertEquals(RANGE_STATUS_INITIAL, ranges.get(idx).status());

        // Middle, first, last.
        map.deleteRange(new GridGgfsFileAffinityRange(30, 35, affKey));
        map.deleteRange(new GridGgfsFileAffinityRange(10, 15, affKey));
        map.deleteRange(new GridGgfsFileAffinityRange(70, 75, affKey));

        ranges = map.ranges();

        assertEquals(4, ranges.size());

        assertEquals(RANGE_STATUS_INITIAL, ranges.get(0).status());
        assertTrue(ranges.get(0).regionEqual(new GridGgfsFileAffinityRange(16, 19, affKey)));

        assertEquals(RANGE_STATUS_INITIAL, ranges.get(1).status());
        assertTrue(ranges.get(1).regionEqual(new GridGgfsFileAffinityRange(36, 39, affKey)));

        assertEquals(RANGE_STATUS_INITIAL, ranges.get(2).status());
        assertTrue(ranges.get(2).regionEqual(new GridGgfsFileAffinityRange(50, 59, affKey)));

        assertEquals(RANGE_STATUS_INITIAL, ranges.get(3).status());
        assertTrue(ranges.get(3).regionEqual(new GridGgfsFileAffinityRange(76, 79, affKey)));
    }
View Full Code Here

        final GridGgfsFileMap map = new GridGgfsFileMap();

        final GridUuid affKey1 = GridUuid.randomUuid();
        final GridUuid affKey2 = GridUuid.randomUuid();

        map.addRange(new GridGgfsFileAffinityRange(10, 19, affKey1));
        map.addRange(new GridGgfsFileAffinityRange(30, 39, affKey1));

        GridTestUtils.assertThrows(log, new Callable<Object>() {
            @Override public Object call() throws Exception {
                map.updateRangeStatus(new GridGgfsFileAffinityRange(0, 5, affKey1), RANGE_STATUS_MOVING);

                return null;
            }
        }, GridGgfsInvalidRangeException.class, null);

        GridTestUtils.assertThrows(log, new Callable<Object>() {
            @Override public Object call() throws Exception {
                map.updateRangeStatus(new GridGgfsFileAffinityRange(15, 19, affKey1), RANGE_STATUS_MOVING);

                return null;
            }
        }, GridGgfsInvalidRangeException.class, null);

        GridTestUtils.assertThrows(log, new Callable<Object>() {
            @Override public Object call() throws Exception {
                map.updateRangeStatus(new GridGgfsFileAffinityRange(10, 19, affKey2), RANGE_STATUS_MOVING);

                return null;
            }
        }, AssertionError.class, null);

        GridTestUtils.assertThrows(log, new Callable<Object>() {
            @Override public Object call() throws Exception {
                map.updateRangeStatus(new GridGgfsFileAffinityRange(10, 22, affKey1), RANGE_STATUS_MOVING);

                return null;
            }
        }, AssertionError.class, null);
View Full Code Here

TOP

Related Classes of org.gridgain.grid.kernal.processors.ggfs.GridGgfsFileAffinityRange

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.