Examples of BBContainer


Examples of org.voltcore.utils.DBBPool.BBContainer

    }

    @Test
    public void testOfferMaxSize() throws Exception {
        System.out.println("Running testOfferMaxSize");
        BBContainer cont = DBBPool.wrapBB(ByteBuffer.allocateDirect(1024 * 1024 * 64));
        try {
            m_pbd.offer( cont );
        } catch (IOException e) {
            return;
        } finally {
            cont.discard();
        }
        fail();
    }
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        PersistentBinaryDeque pbd = new PersistentBinaryDeque("ha.ha", TEST_DIR);
        pbd.offer(defaultContainer());
        pbd.close();

        pbd = new PersistentBinaryDeque("ha.ha", TEST_DIR);
        BBContainer bb = pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
        try {
            ByteBuffer defaultBuffer = defaultBuffer();
            defaultBuffer.clear();
            assertEquals(defaultBuffer, bb.b());
            pbd.close();
        } finally {
            bb.discard();
        }
    }
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        assertEquals(cnt, 192);

        //Now poll all of it and make sure the data is correct
        for (int ii = 0; ii < 192; ii++) {
            ByteBuffer defaultBuffer = getFilledBuffer(ii);
            BBContainer retval = m_pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
            assertTrue(defaultBuffer.equals(retval.b()));
            retval.discard();
            defaultBuffer.clear();
        }

        //Expect just the current write segment
        TreeSet<String> names = getSortedDirectoryListing();
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        small_pbd = new PersistentBinaryDeque(SMALL_TEST_NONCE, TEST_DIR);
        //Now poll all of it and make sure the data is correct dont poll everything out.
        for (int ii = 0; ii < 10; ii++) {
            ByteBuffer defaultBuffer = getFilledSmallBuffer(ii);
            BBContainer retval = small_pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
            assertTrue(defaultBuffer.equals(retval.b()));
            retval.discard();
            defaultBuffer.clear();
        }
        small_pbd.sync();
        small_pbd.close();
        small_pbd = null;
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        assertEquals(cnt, 192);

        //Now poll half of it and make sure the data is correct
        for (int ii = 0; ii < 96; ii++) {
            ByteBuffer defaultBuffer = getFilledBuffer(ii);
            BBContainer retval = m_pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
            assertTrue(defaultBuffer.equals(retval.b()));
            retval.discard();
            defaultBuffer.clear();
        }
        m_pbd.sync();
        m_pbd.close();
        m_pbd = null;
        System.gc();
        System.runFinalization();

        //Expect just the current write segment
        TreeSet<String> names = getSortedDirectoryListing();
        assertEquals(3, names.size());
        assertTrue(names.first().equals("pbd_nonce.3.pbd"));

        //Reload
        m_pbd = new PersistentBinaryDeque(TEST_NONCE, TEST_DIR);
        cnt = m_pbd.getNumObjects();
        assertEquals(cnt, 96);
        //Expect just the current write segment hole should be deleted.
        names = getSortedDirectoryListing();
        assertEquals(4, names.size());
        assertTrue(names.first().equals("pbd_nonce.3.pbd"));

        for (int ii = 96; ii < 192; ii++) {
            m_pbd.offer(DBBPool.wrapBB(getFilledBuffer(ii)));
        }
        m_pbd.sync();
        cnt = m_pbd.getNumObjects();
        assertEquals(cnt, 192);
        //Now poll half of it and make sure the data is correct
        for (int ii = 96; ii < 192; ii++) {
            ByteBuffer defaultBuffer = getFilledBuffer(ii);
            BBContainer retval = m_pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
            assertTrue(defaultBuffer.equals(retval.b()));
            retval.discard();
            defaultBuffer.clear();
        }
        //Expect just the current write segment
        names = getSortedDirectoryListing();
        assertEquals(3, names.size());
        assertTrue(names.first().equals("pbd_nonce.6.pbd"));

        //Poll and leave one behind.
        for (int ii = 96; ii < 191; ii++) {
            ByteBuffer defaultBuffer = getFilledBuffer(ii);
            BBContainer retval = m_pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
            assertTrue(defaultBuffer.equals(retval.b()));
            retval.discard();
            defaultBuffer.clear();
        }
        //Expect just the current write segment
        names = getSortedDirectoryListing();
        assertEquals(1, names.size());
        assertTrue(names.first().equals("pbd_nonce.8.pbd"));

        //Push to get more segments at head
        BBContainer objs[] = new BBContainer[]{
            DBBPool.wrapBB(ByteBuffer.allocateDirect(1024 * 1024 * 32)),
            DBBPool.wrapBB(ByteBuffer.allocateDirect(1024 * 1024 * 32)),
            DBBPool.wrapBB(ByteBuffer.allocateDirect(1024 * 1024 * 32))};
        m_pbd.push(objs);
        names = getSortedDirectoryListing();
        assertEquals(4, names.size());
        assertTrue(names.first().equals("pbd_nonce.5.pbd"));

        BBContainer retval = m_pbd.poll(PersistentBinaryDeque.UNSAFE_CONTAINER_FACTORY);
        retval.discard();
        names = getSortedDirectoryListing();
        assertEquals(3, names.size());
        assertTrue(names.first().equals("pbd_nonce.6.pbd"));

    }
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        return m_es.submit(new Callable<Object>() {
            @Override
            public Object call() throws Exception {
                try {
                    final BBContainer data = computedData.get();
                    /*
                     * If a filter nulled out the buffer do nothing.
                     */
                    if (data == null) return null;
                    if (m_writeFailed) {
                        data.discard();
                        return null;
                    }
                    try {
                        int totalWritten = 0;

                        final ByteBuffer dataBuf = data.b();
                        DefaultSnapshotDataTarget.enforceSnapshotRateLimit(dataBuf.remaining());

                        while (dataBuf.hasRemaining()) {
                            int written = m_fc.write(dataBuf);
                            if (written > 0) {
                                m_bytesWritten += written;
                                totalWritten += written;
                            }
                        }
                        if (m_bytesSinceLastSync.addAndGet(totalWritten) > m_bytesAllowedBeforeSync) {
                            m_fc.force(false);
                            m_bytesSinceLastSync.set(0);
                        }
                    } finally {
                        data.discard();
                    }
                } catch (Throwable t) {
                    m_writeException = t;
                    m_writeFailed = true;
                    throw Throwables.propagate(t);
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        sourceEngine.activateTableStream( WAREHOUSE_TABLEID, TableStreamType.RECOVERY, Long.MAX_VALUE,
                                          new SnapshotPredicates(-1).toBytes());
        sourceEngine.activateTableStream( STOCK_TABLEID, TableStreamType.RECOVERY, Long.MAX_VALUE,
                                          new SnapshotPredicates(-1).toBytes());

        final BBContainer origin = DBBPool.allocateDirect(1024 * 1024 * 2);
        origin.b().clear();
        final BBContainer container = new BBContainer(origin.b()){

            @Override
            public void discard() {
                checkDoubleFree();
                origin.discard();
            }};
        try {


            List<BBContainer> output = new ArrayList<BBContainer>();
            output.add(container);
            int serialized = sourceEngine.tableStreamSerializeMore(WAREHOUSE_TABLEID,
                                                                   TableStreamType.RECOVERY,
                                                                   output).getSecond()[0];
            assertTrue(serialized > 0);
            container.b().limit(serialized);
            destinationEngine.get().processRecoveryMessage( container.b(), container.address() );


            serialized = sourceEngine.tableStreamSerializeMore(WAREHOUSE_TABLEID,
                                                               TableStreamType.RECOVERY,
                                                               output).getSecond()[0];
            assertEquals( 5, serialized);
            assertEquals( RecoveryMessageType.Complete.ordinal(), container.b().get());

            assertEquals( sourceEngine.tableHashCode(WAREHOUSE_TABLEID), destinationEngine.get().tableHashCode(WAREHOUSE_TABLEID));

            container.b().clear();
            serialized = sourceEngine.tableStreamSerializeMore(STOCK_TABLEID,
                                                               TableStreamType.RECOVERY,
                                                               output).getSecond()[0];
            assertTrue(serialized > 0);
            container.b().limit(serialized);
            destinationEngine.get().processRecoveryMessage( container.b(), container.address());


            serialized = sourceEngine.tableStreamSerializeMore(STOCK_TABLEID,
                                                               TableStreamType.RECOVERY,
                                                               output).getSecond()[0];
            assertEquals( 5, serialized);
            assertEquals( RecoveryMessageType.Complete.ordinal(), container.b().get());
            assertEquals( STOCK_TABLEID, container.b().getInt());

            assertEquals( sourceEngine.tableHashCode(STOCK_TABLEID), destinationEngine.get().tableHashCode(STOCK_TABLEID));
        } finally {
            container.discard();
        }
    }
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

        // Build the index
        sourceEngine.activateTableStream(STOCK_TABLEID, TableStreamType.ELASTIC_INDEX, Long.MAX_VALUE, predicates.toBytes());

        // Humor serializeMore() by providing a buffer, even though it's not used.
        final BBContainer origin = DBBPool.allocateDirect(1024 * 1024 * 2);
        origin.b().clear();
        BBContainer container = new BBContainer(origin.b()){
            @Override
            public void discard() {
                checkDoubleFree();
                origin.discard();
            }
        };
        try {
            List<BBContainer> output = new ArrayList<BBContainer>();
            output.add(container);
            assertEquals(0, sourceEngine.tableStreamSerializeMore(STOCK_TABLEID, TableStreamType.ELASTIC_INDEX, output).getSecond()[0]);
        } finally {
            container.discard();
        }
    }
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

    @Override
    public ListenableFuture<?> write(Callable<BBContainer> tupleData,
            int tableId) {
        try {
            BBContainer container = tupleData.call();
            if (container != null) {
                container.discard();
            }
        } catch (Exception e) {}
        return null;
    }
View Full Code Here

Examples of org.voltcore.utils.DBBPool.BBContainer

    @Override
    public ListenableFuture<?> write(Callable<BBContainer> tupleData, int tableId) {
        rejoinLog.trace("Starting write");

        try {
            BBContainer chunkC;
            ByteBuffer chunk;
            try {
                chunkC = tupleData.call();
                chunk = chunkC.b();
            } catch (Exception e) {
                return Futures.immediateFailedFuture(e);
            }

            // cleanup and exit immediately if in failure mode
            // or on null imput
            if (m_writeFailed.get() != null || (chunkC == null)) {
                if (chunkC != null) {
                    chunkC.discard();
                }

                if (m_failureReported) {
                    return null;
                } else {
                    m_failureReported = true;
                    return Futures.immediateFailedFuture(m_writeFailed.get());
                }
            }

            // cleanup and exit immediately if in failure mode
            // but here, throw an exception because this isn't supposed to happen
            if (m_closed.get()) {
                chunkC.discard();

                IOException e = new IOException("Trying to write snapshot data " +
                        "after the stream is closed");
                m_writeFailed.set(e);
                return Futures.immediateFailedFuture(e);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.