Package org.apache.bookkeeper.meta.LedgerManager

Examples of org.apache.bookkeeper.meta.LedgerManager.LedgerRangeIterator


    @Override
    public void gc(GarbageCleaner garbageCleaner) {
        // create a snapshot first
        NavigableMap<Long, Boolean> bkActiveLedgersSnapshot =
                this.activeLedgers.snapshot();
        LedgerRangeIterator ledgerRangeIterator = ledgerManager.getLedgerRanges();
        try {
            // Empty global active ledgers, need to remove all local active ledgers.
            if (!ledgerRangeIterator.hasNext()) {
                for (Long bkLid : bkActiveLedgersSnapshot.keySet()) {
                    // remove it from current active ledger
                    bkActiveLedgersSnapshot.remove(bkLid);
                    garbageCleaner.clean(bkLid);
                }
            }
            long lastEnd = -1;

            while(ledgerRangeIterator.hasNext()) {
                LedgerRange lRange = ledgerRangeIterator.next();
                Map<Long, Boolean> subBkActiveLedgers = null;

                Long start = lastEnd + 1;
                Long end = lRange.end();
                if (!ledgerRangeIterator.hasNext()) {
                    end = Long.MAX_VALUE;
                }
                subBkActiveLedgers = bkActiveLedgersSnapshot.subMap(
                        start, true, end, true);
View Full Code Here


     * @throws IOException  if the list of ledger identifiers cannot be read from the
     *  metadata store
     */
    public Iterable<Long> listLedgers()
    throws IOException {
        final LedgerRangeIterator iterator = bkc.getLedgerManager().getLedgerRanges();
        return new Iterable<Long>() {
            public Iterator<Long> iterator() {
                return new Iterator<Long>() {
                    Iterator<Long> currentRange = null;

                    @Override
                    public boolean hasNext() {
                        try {
                            if (iterator.hasNext()) {
                                LOG.info("I'm in this part of");
                                return true;
                            } else if (currentRange != null) {
                                if (currentRange.hasNext()) {
                                    return true;
                                }
                            }
                        } catch (IOException e) {
                            LOG.error("Error while checking if there is a next element", e);
                        }

                        return false;
                    }

                    @Override
                    public Long next()
                    throws NoSuchElementException {
                        try{
                            if (currentRange == null) {
                                currentRange = iterator.next().getLedgers().iterator();
                            }
                        } catch (IOException e) {
                            LOG.error("Error while reading the next element", e);
                            throw new NoSuchElementException(e.getMessage());
                        }
View Full Code Here

            try {
                ZooKeeperWatcherBase w = new ZooKeeperWatcherBase(bkConf.getZkTimeout());
                zk = ZkUtils.createConnectedZookeeperClient(bkConf.getZkServers(), w);
                LedgerManagerFactory mFactory = LedgerManagerFactory.newLedgerManagerFactory(bkConf, zk);
                LedgerManager m = mFactory.newLedgerManager();
                LedgerRangeIterator iter = m.getLedgerRanges();
                if (cmdLine.hasOption("m")) {
                    List<ReadMetadataCallback> futures
                        = new ArrayList<ReadMetadataCallback>(LIST_BATCH_SIZE);
                    while (iter.hasNext()) {
                        LedgerRange r = iter.next();
                        for (Long lid : r.getLedgers()) {
                            ReadMetadataCallback cb = new ReadMetadataCallback(lid);
                            m.readLedgerMetadata(lid, cb);
                            futures.add(cb);
                        }
                        if (futures.size() >= LIST_BATCH_SIZE) {
                            while (futures.size() > 0) {
                                ReadMetadataCallback cb = futures.remove(0);
                                printLedgerMetadata(cb);
                            }
                        }
                    }
                    while (futures.size() > 0) {
                        ReadMetadataCallback cb = futures.remove(0);
                        printLedgerMetadata(cb);
                    }
                } else {
                    while (iter.hasNext()) {
                        LedgerRange r = iter.next();
                        for (Long lid : r.getLedgers()) {
                            System.out.println(Long.toString(lid));
                        }
                    }
                }
View Full Code Here

                    cleaned.add(ledgerId);
                }
            };

        SortedSet<Long> scannedLedgers = new TreeSet<Long>();
        LedgerRangeIterator iterator = getLedgerManager().getLedgerRanges();
        while (iterator.hasNext()) {
            LedgerRange ledgerRange = iterator.next();
            scannedLedgers.addAll(ledgerRange.getLedgers());
        }

        assertEquals(createdLedgers, scannedLedgers);
View Full Code Here

    }

    @Test(timeout = 60000)
    public void testIterateNoLedgers() throws Exception {
        LedgerManager lm = getLedgerManager();
        LedgerRangeIterator lri = lm.getLedgerRanges();
        assertNotNull(lri);
        if (lri.hasNext())
            lri.next();

        assertEquals(false, lri.hasNext());
        assertEquals(false, lri.hasNext());
    }
View Full Code Here

    @Override
    public void gc(GarbageCleaner garbageCleaner) {
        // create a snapshot first
        NavigableMap<Long, Boolean> bkActiveLedgersSnapshot =
                this.activeLedgers.snapshot();
        LedgerRangeIterator ledgerRangeIterator = ledgerManager.getLedgerRanges();
        try {
            // Empty global active ledgers, need to remove all local active ledgers.
            if (!ledgerRangeIterator.hasNext()) {
                for (Long bkLid : bkActiveLedgersSnapshot.keySet()) {
                    // remove it from current active ledger
                    bkActiveLedgersSnapshot.remove(bkLid);
                    garbageCleaner.clean(bkLid);
                }
            }
            while(ledgerRangeIterator.hasNext()) {
                LedgerRange lRange = ledgerRangeIterator.next();
                Map<Long, Boolean> subBkActiveLedgers = null;
                Long start = lRange.start();
                Long end = lRange.end();
                if (end != LedgerRange.NOLIMIT) {
                    subBkActiveLedgers = bkActiveLedgersSnapshot.subMap(start,
View Full Code Here

     * @throws IOException  if the list of ledger identifiers cannot be read from the
     *  metadata store
     */
    public Iterable<Long> listLedgers()
    throws IOException {
        final LedgerRangeIterator iterator = bkc.getLedgerManager().getLedgerRanges();
        return new Iterable<Long>() {
            public Iterator<Long> iterator() {
                return new Iterator<Long>() {
                    Iterator<Long> currentRange = null;

                    @Override
                    public boolean hasNext() {
                        try {
                            if (iterator.hasNext()) {
                                LOG.info("I'm in this part of");
                                return true;
                            } else if (currentRange != null) {
                                if (currentRange.hasNext()) {
                                    return true;
                                }
                            }
                        } catch (IOException e) {
                            LOG.error("Error while checking if there is a next element", e);
                        }

                        return false;
                    }

                    @Override
                    public Long next()
                    throws NoSuchElementException {
                        try{
                            if (currentRange == null) {
                                currentRange = iterator.next().getLedgers().iterator();
                            }
                        } catch (IOException e) {
                            LOG.error("Error while reading the next element", e);
                            throw new NoSuchElementException(e.getMessage());
                        }
View Full Code Here

TOP

Related Classes of org.apache.bookkeeper.meta.LedgerManager.LedgerRangeIterator

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.