Examples of LedgerRange


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

                }
            }
            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);

                Set<Long> ledgersInMetadata = lRange.getLedgers();
                LOG.debug("Active in metadata {}, Active in bookie {}",
                          ledgersInMetadata, subBkActiveLedgers.keySet());
                for (Long bkLid : subBkActiveLedgers.keySet()) {
                    if (!ledgersInMetadata.contains(bkLid)) {
                        // remove it from current active ledger
View Full Code Here

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

                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));
                        }
                    }
                }
            } finally {
View Full Code Here

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

            };

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

        assertEquals(createdLedgers, scannedLedgers);

        garbageCollector.gc(cleaner);
View Full Code Here

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

                    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,
                            true, end, true);
                } else {
                    if (start != LedgerRange.NOLIMIT) {
                        subBkActiveLedgers = bkActiveLedgersSnapshot.tailMap(start);
                    } else {
                        subBkActiveLedgers = bkActiveLedgersSnapshot;
                    }
                }
                Set<Long> globalActiveLedgers = lRange.getLedgers();
                LOG.debug("All active ledgers for hash node {}, Current active ledgers from Bookie for hash node {}",
                        globalActiveLedgers, subBkActiveLedgers.keySet());
                for (Long bkLid : subBkActiveLedgers.keySet()) {
                    if (!globalActiveLedgers.contains(bkLid)) {
                        // remove it from current active ledger
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.LedgerRange

            TopicInfo topicInfo = new TopicInfo();

            long startOfLedger = 1;

            while (lrIterator.hasNext()) {
                LedgerRange range = lrIterator.next();

                if (range.hasEndSeqIdIncluded()) {
                    // this means it was a valid and completely closed ledger
                    long endOfLedger = range.getEndSeqIdIncluded().getLocalComponent();
                    topicInfo.ledgerRanges.put(endOfLedger, new InMemoryLedgerRange(range, startOfLedger));
                    startOfLedger = endOfLedger + 1;
                    continue;
                }

                // If it doesn't have a valid end, it must be the last ledger
                if (lrIterator.hasNext()) {
                    String msg = "Ledger-id: " + range.getLedgerId() + " for topic: " + topic.toStringUtf8()
                                 + " is not the last one but still does not have an end seq-id";
                    logger.error(msg);
                    cb.operationFailed(ctx, new PubSubException.UnexpectedConditionException(msg));
                    return;
                }

                // The last ledger does not have a valid seq-id, lets try to
                // find it out
                recoverLastTopicLedgerAndOpenNewOne(range.getLedgerId(), version, topicInfo);
                return;
            }

            // All ledgers were found properly closed, just start a new one
            openNewTopicLedger(version, topicInfo);
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.LedgerRange

                                return;
                            }

                            long prevLedgerEnd = topicInfo.ledgerRanges.isEmpty() ? 0 : topicInfo.ledgerRanges
                                                 .lastKey();
                            LedgerRange lr = LedgerRange.newBuilder().setLedgerId(ledgerId)
                                             .setEndSeqIdIncluded(lastMessage.getMsgId()).build();
                            topicInfo.ledgerRanges.put(lr.getEndSeqIdIncluded().getLocalComponent(),
                                                       new InMemoryLedgerRange(lr, prevLedgerEnd + 1, lh));

                            logger.info("Recovered unclosed ledger: " + ledgerId + " for topic: "
                                        + topic.toStringUtf8() + " with " + numEntriesInLastLedger + " entries");
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.LedgerRange

                    topicInfo.lastSeqIdPushed = topicInfo.ledgerRanges.isEmpty() ? MessageSeqId.newBuilder()
                                                .setLocalComponent(0).build() : topicInfo.ledgerRanges.lastEntry().getValue().range
                                                .getEndSeqIdIncluded();

                    LedgerRange lastRange = LedgerRange.newBuilder().setLedgerId(lh.getId()).build();
                    topicInfo.currentLedgerRange = new InMemoryLedgerRange(lastRange, topicInfo.lastSeqIdPushed
                            .getLocalComponent() + 1, lh);

                    // Persist the fact that we started this new
                    // ledger to ZK
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.LedgerRange

            return RC_NOLEDGERS;
        }
        Iterator<LedgerRange> lrIterator = ranges.iterator();
        long startOfLedger = 1;
        while (lrIterator.hasNext()) {
            LedgerRange range = lrIterator.next();
            if (range.hasEndSeqIdIncluded()) {
                long endOfLedger = range.getEndSeqIdIncluded().getLocalComponent();
                ledgers.put(endOfLedger, new InMemoryLedgerRange(range, startOfLedger));
                startOfLedger = endOfLedger + 1;
                continue;
            }
            if (lrIterator.hasNext()) {
                throw new IOException("Ledger-id: " + range.getLedgerId() + " for topic: " + topic
                        + " is not the last one but still does not have an end seq-id");
            }
            // admin has read last confirmed entry of last ledger
            // so we don't need to handle here
        }
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.LedgerRange

                return;
            }
            Iterator<LedgerRange> lrIterator = lrs.iterator();
            long startOfLedger = 1;
            while (lrIterator.hasNext()) {
                LedgerRange range = lrIterator.next();
                long endOfLedger = Long.MAX_VALUE;
                if (range.hasEndSeqIdIncluded()) {
                    endOfLedger = range.getEndSeqIdIncluded().getLocalComponent();
                }
                System.out.println("Ledger " + range.getLedgerId() + " [ " + startOfLedger + " ~ " + (endOfLedger == Long.MAX_VALUE ? "" : endOfLedger) + " ]");

                startOfLedger = endOfLedger + 1;
            }
            System.out.println();
        }
View Full Code Here

Examples of org.apache.hedwig.protocol.PubSubProtocol.LedgerRange

        }
        List<LedgerRange> results = new ArrayList<LedgerRange>();
        List<LedgerRange> lrs = ranges.getRangesList();
        long startSeqId = 1L;
        if (!lrs.isEmpty()) {
            LedgerRange range = lrs.get(0);
            if (!range.hasStartSeqIdIncluded() && range.hasEndSeqIdIncluded()) {
                long ledgerId = range.getLedgerId();
                try {
                    LedgerHandle lh = bk.openLedgerNoRecovery(ledgerId, DigestType.CRC32, passwd);
                    long numEntries = lh.readLastConfirmed() + 1;
                    long endOfLedger = range.getEndSeqIdIncluded().getLocalComponent();
                    startSeqId = endOfLedger - numEntries + 1;
                } catch (BKException.BKNoSuchLedgerExistsException be) {
                    // ignore it
                }
            }
        }
        Iterator<LedgerRange> lrIter = lrs.iterator();
        while (lrIter.hasNext()) {
            LedgerRange range = lrIter.next();
            if (range.hasEndSeqIdIncluded()) {
                long endOfLedger = range.getEndSeqIdIncluded().getLocalComponent();
                if (range.hasStartSeqIdIncluded()) {
                    startSeqId = range.getStartSeqIdIncluded();
                } else {
                    range = buildLedgerRange(range.getLedgerId(), startSeqId, range.getEndSeqIdIncluded());
                }
                results.add(range);
                if (startSeqId < endOfLedger + 1) {
                    startSeqId = endOfLedger + 1;
                }
                continue;
            }
            if (lrIter.hasNext()) {
                throw new IllegalStateException("Ledger " + range.getLedgerId() + " for topic " + topic.toString()
                                                + " is not the last one but still does not have an end seq-id");
            }

            if (range.hasStartSeqIdIncluded()) {
                startSeqId = range.getStartSeqIdIncluded();
            }

            LedgerHandle lh = bk.openLedgerNoRecovery(range.getLedgerId(), DigestType.CRC32, passwd);
            long endOfLedger = startSeqId + lh.readLastConfirmed();
            MessageSeqId endSeqId = MessageSeqId.newBuilder().setLocalComponent(endOfLedger).build();
            results.add(buildLedgerRange(range.getLedgerId(), startSeqId, endSeqId));
        }
        return results;
    }
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.