Package org.apache.hadoop.hdfs.server.namenode.bookkeeper.metadata

Examples of org.apache.hadoop.hdfs.server.namenode.bookkeeper.metadata.EditLogLedgerMetadata


      interruptedException("Interrupted creating ledger for txId " + txId, e);
    }

    // Create metadata for associated with the edit log segment starting at
    // txId in ZooKeeper
    EditLogLedgerMetadata ledgerMetadata = new EditLogLedgerMetadata(
        FSConstants.LAYOUT_VERSION, currentInProgressLedger.getId(), txId, -1);
    String ledgerFullPath =
        metadataManager.fullyQualifiedPathForLedger(ledgerMetadata);
    metadataManager.writeEditLogLedgerMetadata(ledgerFullPath, ledgerMetadata);
    maxTxId.store(txId);
View Full Code Here


        throw new IOException(
            "Cannot find metadata for an in-progress ledger with first txId "
                + firstTxId);
      }

      EditLogLedgerMetadata inProgressMeta = inProgressMetaAndVersion.getEntry();

      if (currentInProgressLedger != null) {
        long inProgressLedgerId = currentInProgressLedger.getId();

        if (inProgressMeta.getLedgerId() == inProgressLedgerId) {
          // If the segment is already // If the segment is currently
          // in-progress, then finalize the ledger (this ensures every entry
          // in the ledger committed to the BookKeeper quorum)
          try {
            currentInProgressLedger.close();
          } catch (BKException e) {
            bkException("Unexpected BookKeeper error closing ledger id " +
                inProgressLedgerId, e);
          } catch (InterruptedException e) {
            interruptedException("Interrupted closing ledger id " +
                inProgressLedgerId, e);
          }
          currentInProgressPath = null;
          currentInProgressLedger = null;
        } else { // We can not finalize a ledger that is not in-progress
          throw new IOException("Current in-progress ledger has ledger id (" +
              inProgressLedgerId + ") different from expected ledger id " +
              inProgressMeta.getLedgerId());
        }
      }

      // Set lastTxId in the metadata and persist it to ZooKeeper
      EditLogLedgerMetadata finalizedMeta =
          inProgressMeta.finalizeWithLastTxId(lastTxId);
      String finalizedPath =
          metadataManager.fullyQualifiedPathForLedger(finalizedMeta);
      if (LOG.isDebugEnabled()) {
        LOG.debug("Attempting to finalize metadata " + finalizedMeta +
View Full Code Here

    Collection<EditLogLedgerMetadata> ledgers =
        bkjm.metadataManager.listLedgers(true);
    assertEquals("Only one ledger must remain", 1, ledgers.size());

    EditLogLedgerMetadata ledger = ledgers.iterator().next();
    assertEquals("Ledger must be finalized with correct lastTxId",
        ledger.getLastTxId(), 100);
    assertEquals("Finalized ledger's ledgerId must match created ledger's id",
        ledger.getLedgerId(), h.ledgerForStartedSegment.getLedgerId());
    assertEquals("Finalized ledger's firstTxId", ledger.getFirstTxId(),
        h.ledgerForStartedSegment.getFirstTxId());

  }
View Full Code Here

   * Tests that {@link EditLogLedgerMetadata} can be correctly serialized
   * and deserialized.
   */
  @Test
  public void testReadAndWrite() throws Exception {
    EditLogLedgerMetadata ledgerMetadataIn = new EditLogLedgerMetadata(
        FSConstants.LAYOUT_VERSION, 1, 1, -1);
    EditLogLedgerMetadataWritable ledgerMetadataWritableIn =
        new EditLogLedgerMetadataWritable();
    ledgerMetadataWritableIn.set(ledgerMetadataIn);

    // Calls readWriteFields()
    byte[] editLogLedgerMedataBytes =
        WritableUtil.writableToByteArray(ledgerMetadataWritableIn);

    // Calls readFields()
    EditLogLedgerMetadataWritable ledgerMetadataWritableOut =
        WritableUtil.readWritableFromByteArray(editLogLedgerMedataBytes,
            new EditLogLedgerMetadataWritable());

    // Tests that deserialize(read(write(serialize(deserialize(m)) == m
    EditLogLedgerMetadata ledgerMetadataOut = ledgerMetadataWritableOut.get();
    assertEquals(ledgerMetadataIn, ledgerMetadataOut);
  }
View Full Code Here

   * {@link #readFields(DataInput)} prior to calling this method
   * @return The metadata object constructed from internal state serialized
   *         from a byte array
   */
  public EditLogLedgerMetadata get() {
    return new EditLogLedgerMetadata(logVersion, ledgerId, firstTxId, lastTxId);
  }
View Full Code Here

TOP

Related Classes of org.apache.hadoop.hdfs.server.namenode.bookkeeper.metadata.EditLogLedgerMetadata

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.