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


Java IOContext类代码示例

本文整理汇总了Java中org.apache.lucene.store.IOContext的典型用法代码示例。如果您正苦于以下问题:Java IOContext类的具体用法?Java IOContext怎么用?Java IOContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


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

示例1: SegmentMerger

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
SegmentMerger(List<AtomicReader> readers, SegmentInfo segmentInfo, InfoStream infoStream, Directory dir, int termIndexInterval,
              MergeState.CheckAbort checkAbort, FieldInfos.FieldNumbers fieldNumbers, IOContext context, boolean validate) throws IOException {
  // validate incoming readers
  if (validate) {
    for (AtomicReader reader : readers) {
      reader.checkIntegrity();
    }
  }
  mergeState = new MergeState(readers, segmentInfo, infoStream, checkAbort);
  directory = dir;
  this.termIndexInterval = termIndexInterval;
  this.codec = segmentInfo.getCodec();
  this.context = context;
  this.fieldInfosBuilder = new FieldInfos.Builder(fieldNumbers);
  mergeState.segmentInfo.setDocCount(setDocMaps());
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:17,代码来源:SegmentMerger.java

示例2: createVerifyingOutput

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/**
 * The returned IndexOutput validates the files checksum.
 * <p>
 * Note: Checksums are calculated by default since version 4.8.0. This method only adds the
 * verification against the checksum in the given metadata and does not add any significant overhead.
 */
public IndexOutput createVerifyingOutput(String fileName, final StoreFileMetaData metadata, final IOContext context) throws IOException {
    IndexOutput output = directory().createOutput(fileName, context);
    boolean success = false;
    try {
        assert metadata.writtenBy() != null;
        assert metadata.writtenBy().onOrAfter(StoreFileMetaData.FIRST_LUCENE_CHECKSUM_VERSION);
        output = new LuceneVerifyingIndexOutput(metadata, output);
        success = true;
    } finally {
        if (success == false) {
            IOUtils.closeWhileHandlingException(output);
        }
    }
    return output;
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:22,代码来源:Store.java

示例3: markStoreCorrupted

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/**
 * Marks this store as corrupted. This method writes a <tt>corrupted_${uuid}</tt> file containing the given exception
 * message. If a store contains a <tt>corrupted_${uuid}</tt> file {@link #isMarkedCorrupted()} will return <code>true</code>.
 */
public void markStoreCorrupted(IOException exception) throws IOException {
    ensureOpen();
    if (!isMarkedCorrupted()) {
        String uuid = CORRUPTED + UUIDs.randomBase64UUID();
        try (IndexOutput output = this.directory().createOutput(uuid, IOContext.DEFAULT)) {
            CodecUtil.writeHeader(output, CODEC, VERSION);
            BytesStreamOutput out = new BytesStreamOutput();
            out.writeException(exception);
            BytesReference bytes = out.bytes();
            output.writeVInt(bytes.length());
            BytesRef ref = bytes.toBytesRef();
            output.writeBytes(ref.bytes, ref.offset, ref.length);
            CodecUtil.writeFooter(output);
        } catch (IOException ex) {
            logger.warn("Can't mark store as corrupted", ex);
        }
        directory().sync(Collections.singleton(uuid));
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:24,代码来源:Store.java

示例4: load

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/**
 * Loads information about the Elasticsearch keystore from the provided config directory.
 *
 * {@link #decrypt(char[])} must be called before reading or writing any entries.
 * Returns {@code null} if no keystore exists.
 */
public static KeyStoreWrapper load(Path configDir) throws IOException {
    Path keystoreFile = keystorePath(configDir);
    if (Files.exists(keystoreFile) == false) {
        return null;
    }

    SimpleFSDirectory directory = new SimpleFSDirectory(configDir);
    try (IndexInput indexInput = directory.openInput(KEYSTORE_FILENAME, IOContext.READONCE)) {
        ChecksumIndexInput input = new BufferedChecksumIndexInput(indexInput);
        CodecUtil.checkHeader(input, KEYSTORE_FILENAME, FORMAT_VERSION, FORMAT_VERSION);
        byte hasPasswordByte = input.readByte();
        boolean hasPassword = hasPasswordByte == 1;
        if (hasPassword == false && hasPasswordByte != 0) {
            throw new IllegalStateException("hasPassword boolean is corrupt: "
                + String.format(Locale.ROOT, "%02x", hasPasswordByte));
        }
        String type = input.readString();
        String secretKeyAlgo = input.readString();
        byte[] keystoreBytes = new byte[input.readInt()];
        input.readBytes(keystoreBytes, 0, keystoreBytes.length);
        CodecUtil.checkFooter(input);
        return new KeyStoreWrapper(hasPassword, type, secretKeyAlgo, keystoreBytes);
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:31,代码来源:KeyStoreWrapper.java

示例5: testStatsDirWrapper

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
public void testStatsDirWrapper() throws IOException {
    Directory dir = newDirectory();
    Directory target = newDirectory();
    RecoveryState.Index indexStats = new RecoveryState.Index();
    StoreRecovery.StatsDirectoryWrapper wrapper = new StoreRecovery.StatsDirectoryWrapper(target, indexStats);
    try (IndexOutput output = dir.createOutput("foo.bar", IOContext.DEFAULT)) {
        CodecUtil.writeHeader(output, "foo", 0);
        int numBytes = randomIntBetween(100, 20000);
        for (int i = 0; i < numBytes; i++) {
            output.writeByte((byte)i);
        }
        CodecUtil.writeFooter(output);
    }
    wrapper.copyFrom(dir, "foo.bar", "bar.foo", IOContext.DEFAULT);
    assertNotNull(indexStats.getFileDetails("bar.foo"));
    assertNull(indexStats.getFileDetails("foo.bar"));
    assertEquals(dir.fileLength("foo.bar"), indexStats.getFileDetails("bar.foo").length());
    assertEquals(dir.fileLength("foo.bar"), indexStats.getFileDetails("bar.foo").recovered());
    assertFalse(indexStats.getFileDetails("bar.foo").reused());
    IOUtils.close(dir, target);
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:22,代码来源:StoreRecoveryTests.java

示例6: testCheckIntegrity

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
public void testCheckIntegrity() throws IOException {
    Directory dir = newDirectory();
    long luceneFileLength = 0;

    try (IndexOutput output = dir.createOutput("lucene_checksum.bin", IOContext.DEFAULT)) {
        int iters = scaledRandomIntBetween(10, 100);
        for (int i = 0; i < iters; i++) {
            BytesRef bytesRef = new BytesRef(TestUtil.randomRealisticUnicodeString(random(), 10, 1024));
            output.writeBytes(bytesRef.bytes, bytesRef.offset, bytesRef.length);
            luceneFileLength += bytesRef.length;
        }
        CodecUtil.writeFooter(output);
        luceneFileLength += CodecUtil.footerLength();

    }

    final long luceneChecksum;
    try (IndexInput indexInput = dir.openInput("lucene_checksum.bin", IOContext.DEFAULT)) {
        assertEquals(luceneFileLength, indexInput.length());
        luceneChecksum = CodecUtil.retrieveChecksum(indexInput);
    }

    dir.close();

}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:26,代码来源:StoreTests.java

示例7: corruptFile

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
private void corruptFile(Directory dir, String fileIn, String fileOut) throws IOException {
    IndexInput input = dir.openInput(fileIn, IOContext.READONCE);
    IndexOutput output = dir.createOutput(fileOut, IOContext.DEFAULT);
    long len = input.length();
    byte[] b = new byte[1024];
    long broken = randomInt((int) len-1);
    long pos = 0;
    while (pos < len) {
        int min = (int) Math.min(input.length() - pos, b.length);
        input.readBytes(b, 0, min);
        if (broken >= pos && broken < pos + min) {
            // Flip one byte
            int flipPos = (int) (broken - pos);
            b[flipPos] = (byte) (b[flipPos] ^ 42);
        }
        output.writeBytes(b, min);
        pos += min;
    }
    IOUtils.close(input, output);

}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:22,代码来源:StoreTests.java

示例8: testMarkRest

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
public void testMarkRest() throws Exception {
    RAMDirectory dir = new RAMDirectory();
    IndexOutput output = dir.createOutput("test", IOContext.DEFAULT);
    for (int i = 0; i < 3; i++) {
        output.writeByte((byte) 1);
    }
    for (int i = 0; i < 3; i++) {
        output.writeByte((byte) 2);
    }

    output.close();

    IndexInput input = dir.openInput("test", IOContext.DEFAULT);
    InputStreamIndexInput is = new InputStreamIndexInput(input, 4);
    assertThat(is.markSupported(), equalTo(true));
    assertThat(is.read(), equalTo(1));
    assertThat(is.read(), equalTo(1));
    is.mark(0);
    assertThat(is.read(), equalTo(1));
    assertThat(is.read(), equalTo(2));
    is.reset();
    assertThat(is.read(), equalTo(1));
    assertThat(is.read(), equalTo(2));
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:25,代码来源:InputStreamIndexInputTests.java

示例9: segmentWasUpgraded

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
private static boolean segmentWasUpgraded(Directory directory, SegmentInfo si) {
  // Check marker file:
  String markerFileName = IndexFileNames.segmentFileName(si.name, "upgraded", Lucene3xSegmentInfoFormat.UPGRADED_SI_EXTENSION);
  IndexInput in = null;
  try {
    in = directory.openInput(markerFileName, IOContext.READONCE);
    if (CodecUtil.checkHeader(in, SEGMENT_INFO_UPGRADE_CODEC, SEGMENT_INFO_UPGRADE_VERSION, SEGMENT_INFO_UPGRADE_VERSION) == 0) {
      return true;
    }
  } catch (IOException ioe) {
    // Ignore: if something is wrong w/ the marker file,
    // we will just upgrade again
  } finally {
    if (in != null) {
      IOUtils.closeWhileHandlingException(in);
    }
  }
  return false;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:20,代码来源:SegmentInfos.java

示例10: Lucene40StoredFieldsWriter

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/** Sole constructor. */
public Lucene40StoredFieldsWriter(Directory directory, String segment, IOContext context) throws IOException {
  assert directory != null;
  this.directory = directory;
  this.segment = segment;

  boolean success = false;
  try {
    fieldsStream = directory.createOutput(IndexFileNames.segmentFileName(segment, "", FIELDS_EXTENSION), context);
    indexStream = directory.createOutput(IndexFileNames.segmentFileName(segment, "", FIELDS_INDEX_EXTENSION), context);

    CodecUtil.writeHeader(fieldsStream, CODEC_NAME_DAT, VERSION_CURRENT);
    CodecUtil.writeHeader(indexStream, CODEC_NAME_IDX, VERSION_CURRENT);
    assert HEADER_LENGTH_DAT == fieldsStream.getFilePointer();
    assert HEADER_LENGTH_IDX == indexStream.getFilePointer();
    success = true;
  } finally {
    if (!success) {
      abort();
    }
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:23,代码来源:Lucene40StoredFieldsWriter.java

示例11: write

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/** Writes this vector to the file <code>name</code> in Directory
  <code>d</code>, in a format that can be read by the constructor {@link
  #BitVector(Directory, String, IOContext)}.  */
public final void write(Directory d, String name, IOContext context) throws IOException {
  assert !(d instanceof CompoundFileDirectory);
  IndexOutput output = d.createOutput(name, context);
  try {
    output.writeInt(-2);
    CodecUtil.writeHeader(output, CODEC, VERSION_CURRENT);
    if (isSparse()) { 
      // sparse bit-set more efficiently saved as d-gaps.
      writeClearedDgaps(output);
    } else {
      writeBits(output);
    }
    CodecUtil.writeFooter(output);
    assert verifyCount();
  } finally {
    IOUtils.close(output);
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:22,代码来源:BitVector.java

示例12: Lucene40TermVectorsWriter

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/** Sole constructor. */
public Lucene40TermVectorsWriter(Directory directory, String segment, IOContext context) throws IOException {
  this.directory = directory;
  this.segment = segment;
  boolean success = false;
  try {
    // Open files for TermVector storage
    tvx = directory.createOutput(IndexFileNames.segmentFileName(segment, "", Lucene40TermVectorsReader.VECTORS_INDEX_EXTENSION), context);
    CodecUtil.writeHeader(tvx, CODEC_NAME_INDEX, VERSION_CURRENT);
    tvd = directory.createOutput(IndexFileNames.segmentFileName(segment, "", Lucene40TermVectorsReader.VECTORS_DOCUMENTS_EXTENSION), context);
    CodecUtil.writeHeader(tvd, CODEC_NAME_DOCS, VERSION_CURRENT);
    tvf = directory.createOutput(IndexFileNames.segmentFileName(segment, "", Lucene40TermVectorsReader.VECTORS_FIELDS_EXTENSION), context);
    CodecUtil.writeHeader(tvf, CODEC_NAME_FIELDS, VERSION_CURRENT);
    assert HEADER_LENGTH_INDEX == tvx.getFilePointer();
    assert HEADER_LENGTH_DOCS == tvd.getFilePointer();
    assert HEADER_LENGTH_FIELDS == tvf.getFilePointer();
    success = true;
  } finally {
    if (!success) {
      abort();
    }
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:24,代码来源:Lucene40TermVectorsWriter.java

示例13: snapshotFile

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/**
 * Snapshot individual file
 * <p>
 * This is asynchronous method. Upon completion of the operation latch is getting counted down and any failures are
 * added to the {@code failures} list
 *
 * @param fileInfo file to be snapshotted
 */
private void snapshotFile(final BlobStoreIndexShardSnapshot.FileInfo fileInfo) throws IOException {
    final String file = fileInfo.physicalName();
    try (IndexInput indexInput = store.openVerifyingInput(file, IOContext.READONCE, fileInfo.metadata())) {
        for (int i = 0; i < fileInfo.numberOfParts(); i++) {
            final long partBytes = fileInfo.partBytes(i);

            final InputStreamIndexInput inputStreamIndexInput = new InputStreamIndexInput(indexInput, partBytes);
            InputStream inputStream = snapshotRateLimiter == null ? inputStreamIndexInput : new RateLimitingInputStream(inputStreamIndexInput, snapshotRateLimiter, snapshotThrottleListener);
            inputStream = new AbortableInputStream(inputStream, fileInfo.physicalName());
            blobContainer.writeBlob(fileInfo.partName(i), inputStream, partBytes);
        }
        Store.verify(indexInput);
        snapshotStatus.addProcessedFile(fileInfo.length());
    } catch (Throwable t) {
        failStoreIfCorrupted(t);
        snapshotStatus.addProcessedFile(0);
        throw t;
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:28,代码来源:BlobStoreIndexShardRepository.java

示例14: getReadOnlyClone

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
/**
 * Returns a ref to a clone. NOTE: you should decRef() the reader when you're
 * done (ie do not call close()).
 */
public synchronized SegmentReader getReadOnlyClone(IOContext context) throws IOException {
  if (reader == null) {
    getReader(context).decRef();
    assert reader != null;
  }
  // force new liveDocs in initWritableLiveDocs even if it's null
  liveDocsShared = true;
  if (liveDocs != null) {
    return new SegmentReader(reader.getSegmentInfo(), reader, liveDocs, info.info.getDocCount() - info.getDelCount() - pendingDeleteCount);
  } else {
    // liveDocs == null and reader != null. That can only be if there are no deletes
    assert reader.getLiveDocs() == null;
    reader.incRef();
    return reader;
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:21,代码来源:ReadersAndUpdates.java

示例15: read

import org.apache.lucene.store.IOContext; //导入依赖的package包/类
@Override
public SegmentInfo read(Directory directory, String segmentName, IOContext context) throws IOException { 
  // NOTE: this is NOT how 3.x is really written...
  String fileName = IndexFileNames.segmentFileName(segmentName, "", Lucene3xSegmentInfoFormat.UPGRADED_SI_EXTENSION);

  boolean success = false;

  IndexInput input = directory.openInput(fileName, context);

  try {
    SegmentInfo si = readUpgradedSegmentInfo(segmentName, directory, input);
    success = true;
    return si;
  } finally {
    if (!success) {
      IOUtils.closeWhileHandlingException(input);
    } else {
      input.close();
    }
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:22,代码来源:Lucene3xSegmentInfoReader.java


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