当前位置: 首页>>代码示例>>Java>>正文


Java BTree.update方法代码示例

本文整理汇总了Java中org.apache.cassandra.utils.btree.BTree.update方法的典型用法代码示例。如果您正苦于以下问题:Java BTree.update方法的具体用法?Java BTree.update怎么用?Java BTree.update使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.cassandra.utils.btree.BTree的用法示例。


在下文中一共展示了BTree.update方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testSlicingAllSmallTrees

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
@Test
public void testSlicingAllSmallTrees() throws ExecutionException, InterruptedException
{
    Object[] cur = BTree.empty();
    TreeSet<Integer> canon = new TreeSet<>();
    // we set FAN_FACTOR to 4, so 128 items is four levels deep, three fully populated
    for (int i = 0 ; i < 128 ; i++)
    {
        String id = String.format("[0..%d)", canon.size());
        System.out.println("Testing " + id);
        Futures.allAsList(testAllSlices(id, cur, canon)).get();
        Object[] next = null;
        while (next == null)
            next = BTree.update(cur, ICMP, Arrays.asList(i), true, SPORADIC_ABORT);
        cur = next;
        canon.add(i);
    }
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:19,代码来源:LongBTreeTest.java

示例2: testClearOnAbort

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
@Test
public void testClearOnAbort()
{
    final Comparator<String> cmp = new Comparator<String>()
    {
        public int compare(String o1, String o2)
        {
            return o1.compareTo(o2);
        }
    };

    Object[] btree = BTree.build(ranges(range(0, 8)), cmp, true, UpdateFunction.NoOp.<String>instance());
    BTree.update(btree, cmp, ranges(range(0, 94)), false, new AbortAfterX(90));
    btree = BTree.update(btree, cmp, ranges(range(0, 94)), false, UpdateFunction.NoOp.<String>instance());
    Assert.assertTrue(BTree.isWellFormed(btree, cmp));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:17,代码来源:BTreeTest.java

示例3: testOversizedMiddleInsert

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
@Test
public void testOversizedMiddleInsert()
{
    TreeSet<Integer> canon = new TreeSet<>();
    for (int i = 0 ; i < 10000000 ; i++)
        canon.add(i);
    Object[] btree = BTree.build(Arrays.asList(Integer.MIN_VALUE, Integer.MAX_VALUE), ICMP, true, null);
    btree = BTree.update(btree, ICMP, canon, true);
    canon.add(Integer.MIN_VALUE);
    canon.add(Integer.MAX_VALUE);
    Assert.assertTrue(BTree.isWellFormed(btree, ICMP));
    testEqual("Oversize", BTree.<Integer>slice(btree, true), canon.iterator());
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:14,代码来源:LongBTreeTest.java

示例4: testUpdate_UpdateFunctionCallBack

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
/**
 * Tests that the apply method of the <code>UpdateFunction</code> is only called once with each key update.
 * (see CASSANDRA-8018).
 */
@Test
public void testUpdate_UpdateFunctionCallBack()
{
    Object[] btree = new Object[1];
    CallsMonitor monitor = new CallsMonitor();

    btree = BTree.update(btree, CMP, Arrays.asList(1), monitor);
    assertArrayEquals(new Object[] {1}, btree);
    assertEquals(1, monitor.getNumberOfCalls(1));

    monitor.clear();
    btree = BTree.update(btree, CMP, Arrays.asList(2), monitor);
    assertArrayEquals(new Object[] {1, 2, null}, btree);
    assertEquals(1, monitor.getNumberOfCalls(2));

    // with existing value
    monitor.clear();
    btree = BTree.update(btree, CMP, Arrays.asList(1), monitor);
    assertArrayEquals(new Object[] {1, 2, null}, btree);
    assertEquals(1, monitor.getNumberOfCalls(1));

    // with two non-existing values
    monitor.clear();
    btree = BTree.update(btree, CMP, Arrays.asList(3, 4), monitor);
    assertArrayEquals(new Object[] {1, 2, 3, 4, null}, btree);
    assertEquals(1, monitor.getNumberOfCalls(3));
    assertEquals(1, monitor.getNumberOfCalls(4));

    // with one existing value and one non existing value
    monitor.clear();
    btree = BTree.update(btree, CMP, Arrays.asList(2, 5), monitor);
    assertArrayEquals(new Object[] {3, new Object[]{1, 2, null}, new Object[]{4, 5, null},  new int[]{2, 5}}, btree);
    assertEquals(1, monitor.getNumberOfCalls(2));
    assertEquals(1, monitor.getNumberOfCalls(5));
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:40,代码来源:BTreeTest.java

示例5: testClearOnAbort

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
@Test
public void testClearOnAbort()
{
    Object[] btree = BTree.build(seq(2), noOp);
    Object[] copy = Arrays.copyOf(btree, btree.length);
    BTree.update(btree, CMP, seq(94), new AbortAfterX(90));

    assertArrayEquals(copy, btree);

    btree = BTree.update(btree, CMP, seq(94), noOp);
    assertTrue(BTree.isWellFormed(btree, CMP));
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:13,代码来源:BTreeTest.java

示例6: addAllWithSizeDelta

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
/**
 * This is only called by Memtable.resolve, so only AtomicBTreeColumns needs to implement it.
 *
 * @return the difference in size seen after merging the given columns
 */
public long addAllWithSizeDelta(final ColumnFamily cm, MemtableAllocator allocator, OpOrder.Group writeOp, Updater indexer)
{
    ColumnUpdater updater = new ColumnUpdater(this, cm.metadata, allocator, writeOp, indexer);
    DeletionInfo inputDeletionInfoCopy = null;

    while (true)
    {
        Holder current = ref;
        updater.ref = current;
        updater.reset();

        DeletionInfo deletionInfo;
        if (cm.deletionInfo().mayModify(current.deletionInfo))
        {
            if (inputDeletionInfoCopy == null)
                inputDeletionInfoCopy = cm.deletionInfo().copy(HeapAllocator.instance);

            deletionInfo = current.deletionInfo.copy().add(inputDeletionInfoCopy);
            updater.allocated(deletionInfo.unsharedHeapSize() - current.deletionInfo.unsharedHeapSize());
        }
        else
        {
            deletionInfo = current.deletionInfo;
        }

        Object[] tree = BTree.update(current.tree, metadata.comparator.columnComparator(Memtable.MEMORY_POOL instanceof NativePool), cm, cm.getColumnCount(), true, updater);

        if (tree != null && refUpdater.compareAndSet(this, current, new Holder(tree, deletionInfo)))
        {
            indexer.updateRowLevelIndexes();
            updater.finish();
            return updater.dataSize;
        }
    }
}
 
开发者ID:daidong,项目名称:GraphTrek,代码行数:41,代码来源:AtomicBTreeColumns.java

示例7: testOversizedMiddleInsert

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
@Test
public void testOversizedMiddleInsert()
{
    TreeSet<Integer> canon = new TreeSet<>();
    for (int i = 0 ; i < 10000000 ; i++)
        canon.add(i);
    Object[] btree = BTree.build(Arrays.asList(Integer.MIN_VALUE, Integer.MAX_VALUE), ICMP, true);
    btree = BTree.update(btree, ICMP, canon, true);
    canon.add(Integer.MIN_VALUE);
    canon.add(Integer.MAX_VALUE);
    Assert.assertTrue(BTree.isWellFormed(btree, ICMP));
    testEqual("Oversize", BTree.<Integer>slice(btree, true), canon.iterator());
}
 
开发者ID:mafernandez-stratio,项目名称:cassandra-cqlMod,代码行数:14,代码来源:LongBTreeTest.java

示例8: testSlicingAllSmallTrees

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
@Test
public void testSlicingAllSmallTrees() throws ExecutionException, InterruptedException
{
    Object[] cur = BTree.empty();
    TreeSet<Integer> canon = new TreeSet<>();
    // we set FAN_FACTOR to 4, so 128 items is four levels deep, three fully populated
    for (int i = 0 ; i < 128 ; i++)
    {
        String id = String.format("[0..%d)", canon.size());
        System.out.println("Testing " + id);
        Futures.allAsList(testAllSlices(id, cur, canon)).get();
        cur = BTree.update(cur, ICMP, Arrays.asList(i), true, null, null);
        canon.add(i);
    }
}
 
开发者ID:mafernandez-stratio,项目名称:cassandra-cqlMod,代码行数:16,代码来源:LongBTreeTest.java

示例9: addAllWithSizeDelta

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
/**
 * This is only called by Memtable.resolve, so only AtomicBTreeColumns needs to implement it.
 *
 * @return the difference in size seen after merging the given columns
 */
public Pair<Long, Long> addAllWithSizeDelta(final ColumnFamily cm, MemtableAllocator allocator, OpOrder.Group writeOp, Updater indexer)
{
    ColumnUpdater updater = new ColumnUpdater(this, cm.metadata, allocator, writeOp, indexer);
    DeletionInfo inputDeletionInfoCopy = null;

    boolean monitorOwned = false;
    try
    {
        if (usePessimisticLocking())
        {
            Locks.monitorEnterUnsafe(this);
            monitorOwned = true;
        }
        while (true)
        {
            Holder current = ref;
            updater.ref = current;
            updater.reset();

            DeletionInfo deletionInfo;
            if (cm.deletionInfo().mayModify(current.deletionInfo))
            {
                if (inputDeletionInfoCopy == null)
                    inputDeletionInfoCopy = cm.deletionInfo().copy(HeapAllocator.instance);

                deletionInfo = current.deletionInfo.copy().add(inputDeletionInfoCopy);
                updater.allocated(deletionInfo.unsharedHeapSize() - current.deletionInfo.unsharedHeapSize());
            }
            else
            {
                deletionInfo = current.deletionInfo;
            }

            Object[] tree = BTree.update(current.tree, metadata.comparator.columnComparator(Memtable.MEMORY_POOL instanceof NativePool), cm, cm.getColumnCount(), true, updater);

            if (tree != null && refUpdater.compareAndSet(this, current, new Holder(tree, deletionInfo)))
            {
                indexer.updateRowLevelIndexes();
                updater.finish();
                return Pair.create(updater.dataSize, updater.colUpdateTimeDelta);
            }
            else if (!monitorOwned)
            {
                boolean shouldLock = usePessimisticLocking();
                if (!shouldLock)
                {
                    shouldLock = updateWastedAllocationTracker(updater.heapSize);
                }
                if (shouldLock)
                {
                    Locks.monitorEnterUnsafe(this);
                    monitorOwned = true;
                }
            }
        }
    }
    finally
    {
        if (monitorOwned)
            Locks.monitorExitUnsafe(this);
    }
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:68,代码来源:AtomicBTreeColumns.java

示例10: addAllWithSizeDelta

import org.apache.cassandra.utils.btree.BTree; //导入方法依赖的package包/类
/**
 * This is only called by Memtable.resolve, so only AtomicBTreeColumns needs to implement it.
 *
 * @return the difference in size seen after merging the given columns
 */
public Delta addAllWithSizeDelta(final ColumnFamily cm, Function<Cell, Cell> transformation, Updater indexer, Delta delta)
{
    boolean transformed = false;
    Collection<Cell> insert = cm.getSortedColumns();

    while (true)
    {
        Holder current = ref;

        delta.reset();
        DeletionInfo deletionInfo;
        if (cm.deletionInfo().mayModify(current.deletionInfo))
        {
            if (indexer != SecondaryIndexManager.nullUpdater && cm.deletionInfo().hasRanges())
            {
                for (Iterator<RangeTombstone> rangeIterator = cm.deletionInfo().rangeIterator(); rangeIterator.hasNext(); )
                {
                    RangeTombstone rt = rangeIterator.next();
                    long deleteAt = rt.timestamp();
                    for (Iterator<Cell> iter = current.cellRange(getComparator().columnComparator(), rt.min, rt.max); iter.hasNext(); )
                    {
                        Cell c = iter.next();
                        if (deleteAt >= c.timestamp())
                            indexer.remove(c);
                    }
                }
            }

            deletionInfo = current.deletionInfo.copy().add(cm.deletionInfo());
            delta.addHeapSize(deletionInfo.unsharedHeapSize() - current.deletionInfo.unsharedHeapSize());
        }
        else
        {
            deletionInfo = current.deletionInfo;
        }

        ColumnUpdater updater = new ColumnUpdater(this, current, transformation, indexer, delta);
        Object[] tree = BTree.update(current.tree, metadata.comparator.columnComparator(), insert, true, updater);

        if (tree != null && refUpdater.compareAndSet(this, current, new Holder(tree, deletionInfo)))
        {
            indexer.updateRowLevelIndexes();
            return updater.delta;
        }

        if (!transformed)
        {
            // After failing once, transform Columns into a new collection to avoid repeatedly allocating Slab space
            insert = transform(metadata.comparator.columnComparator(), cm, transformation, false);
            transformed = true;
        }
    }

}
 
开发者ID:rajath26,项目名称:cassandra-trunk,代码行数:60,代码来源:AtomicBTreeColumns.java


注:本文中的org.apache.cassandra.utils.btree.BTree.update方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。