Search in sources :

Example 1 with EventFileManager

use of org.apache.nifi.provenance.store.EventFileManager in project nifi by apache.

the class WriteAheadProvenanceRepository method init.

synchronized void init(RecordWriterFactory recordWriterFactory, RecordReaderFactory recordReaderFactory, final EventReporter eventReporter, final Authorizer authorizer, final ProvenanceAuthorizableFactory resourceFactory) throws IOException {
    final EventFileManager fileManager = new EventFileManager();
    eventStore = new PartitionedWriteAheadEventStore(config, recordWriterFactory, recordReaderFactory, eventReporter, fileManager);
    final IndexManager indexManager = new SimpleIndexManager(config);
    eventIndex = new LuceneEventIndex(config, indexManager, eventReporter);
    this.eventReporter = eventReporter;
    this.authorizer = authorizer;
    this.resourceFactory = resourceFactory;
    eventStore.initialize();
    eventIndex.initialize(eventStore);
    try {
        eventStore.reindexLatestEvents(eventIndex);
    } catch (final Exception e) {
        logger.error("Failed to re-index some of the Provenance Events. It is possible that some of the latest " + "events will not be available from the Provenance Repository when a query is issued.", e);
    }
}
Also used : SimpleIndexManager(org.apache.nifi.provenance.lucene.SimpleIndexManager) IndexManager(org.apache.nifi.provenance.lucene.IndexManager) PartitionedWriteAheadEventStore(org.apache.nifi.provenance.store.PartitionedWriteAheadEventStore) EventFileManager(org.apache.nifi.provenance.store.EventFileManager) LuceneEventIndex(org.apache.nifi.provenance.index.lucene.LuceneEventIndex) SimpleIndexManager(org.apache.nifi.provenance.lucene.SimpleIndexManager) IOException(java.io.IOException)

Example 2 with EventFileManager

use of org.apache.nifi.provenance.store.EventFileManager in project nifi by apache.

the class WriteAheadProvenanceRepository method initialize.

@Override
public synchronized void initialize(final EventReporter eventReporter, final Authorizer authorizer, final ProvenanceAuthorizableFactory resourceFactory, final IdentifierLookup idLookup) throws IOException {
    final RecordWriterFactory recordWriterFactory = (file, idGenerator, compressed, createToc) -> {
        final TocWriter tocWriter = createToc ? new StandardTocWriter(TocUtil.getTocFile(file), false, false) : null;
        return new EventIdFirstSchemaRecordWriter(file, idGenerator, tocWriter, compressed, BLOCK_SIZE, idLookup);
    };
    final EventFileManager fileManager = new EventFileManager();
    final RecordReaderFactory recordReaderFactory = (file, logs, maxChars) -> {
        fileManager.obtainReadLock(file);
        try {
            return RecordReaders.newRecordReader(file, logs, maxChars);
        } finally {
            fileManager.releaseReadLock(file);
        }
    };
    init(recordWriterFactory, recordReaderFactory, eventReporter, authorizer, resourceFactory);
}
Also used : LuceneEventIndex(org.apache.nifi.provenance.index.lucene.LuceneEventIndex) CloseableUtil(org.apache.nifi.provenance.util.CloseableUtil) StandardTocWriter(org.apache.nifi.provenance.toc.StandardTocWriter) Query(org.apache.nifi.provenance.search.Query) LoggerFactory(org.slf4j.LoggerFactory) RecordReaders(org.apache.nifi.provenance.serialization.RecordReaders) HashSet(java.util.HashSet) EventFileManager(org.apache.nifi.provenance.store.EventFileManager) TocWriter(org.apache.nifi.provenance.toc.TocWriter) StorageResult(org.apache.nifi.provenance.store.StorageResult) NiFiUser(org.apache.nifi.authorization.user.NiFiUser) Map(java.util.Map) EventStore(org.apache.nifi.provenance.store.EventStore) RecordReaderFactory(org.apache.nifi.provenance.store.RecordReaderFactory) TocUtil(org.apache.nifi.provenance.toc.TocUtil) UserEventAuthorizer(org.apache.nifi.provenance.authorization.UserEventAuthorizer) QuerySubmission(org.apache.nifi.provenance.search.QuerySubmission) SearchableField(org.apache.nifi.provenance.search.SearchableField) EventIndex(org.apache.nifi.provenance.index.EventIndex) Logger(org.slf4j.Logger) Authorizable(org.apache.nifi.authorization.resource.Authorizable) FileUtils(org.apache.nifi.util.file.FileUtils) StorageSummary(org.apache.nifi.provenance.serialization.StorageSummary) Files(java.nio.file.Files) RequestAction(org.apache.nifi.authorization.RequestAction) Set(java.util.Set) IOException(java.io.IOException) PartitionedWriteAheadEventStore(org.apache.nifi.provenance.store.PartitionedWriteAheadEventStore) SimpleIndexManager(org.apache.nifi.provenance.lucene.SimpleIndexManager) File(java.io.File) List(java.util.List) Authorizer(org.apache.nifi.authorization.Authorizer) EventReporter(org.apache.nifi.events.EventReporter) ComputeLineageSubmission(org.apache.nifi.provenance.lineage.ComputeLineageSubmission) NiFiProperties(org.apache.nifi.util.NiFiProperties) IndexManager(org.apache.nifi.provenance.lucene.IndexManager) Severity(org.apache.nifi.reporting.Severity) RecordWriterFactory(org.apache.nifi.provenance.store.RecordWriterFactory) Collections(java.util.Collections) EventAuthorizer(org.apache.nifi.provenance.authorization.EventAuthorizer) StandardTocWriter(org.apache.nifi.provenance.toc.StandardTocWriter) StandardTocWriter(org.apache.nifi.provenance.toc.StandardTocWriter) TocWriter(org.apache.nifi.provenance.toc.TocWriter) EventFileManager(org.apache.nifi.provenance.store.EventFileManager) RecordWriterFactory(org.apache.nifi.provenance.store.RecordWriterFactory) RecordReaderFactory(org.apache.nifi.provenance.store.RecordReaderFactory)

Example 3 with EventFileManager

use of org.apache.nifi.provenance.store.EventFileManager in project nifi by apache.

the class EncryptedWriteAheadProvenanceRepository method initialize.

/**
 * This method initializes the repository. It first builds the key provider and event encryptor
 * from the config values, then creates the encrypted record writer and reader, then delegates
 * back to the superclass for the common implementation.
 *
 * @param eventReporter   the event reporter
 * @param authorizer      the authorizer
 * @param resourceFactory the authorizable factory
 * @param idLookup        the lookup provider
 * @throws IOException if there is an error initializing this repository
 */
@Override
public synchronized void initialize(final EventReporter eventReporter, final Authorizer authorizer, final ProvenanceAuthorizableFactory resourceFactory, final IdentifierLookup idLookup) throws IOException {
    // Initialize the encryption-specific fields
    ProvenanceEventEncryptor provenanceEventEncryptor;
    if (getConfig().supportsEncryption()) {
        try {
            KeyProvider keyProvider;
            if (KeyProviderFactory.requiresMasterKey(getConfig().getKeyProviderImplementation())) {
                SecretKey masterKey = getMasterKey();
                keyProvider = buildKeyProvider(masterKey);
            } else {
                keyProvider = buildKeyProvider();
            }
            provenanceEventEncryptor = new AESProvenanceEventEncryptor();
            provenanceEventEncryptor.initialize(keyProvider);
        } catch (KeyManagementException e) {
            String msg = "Encountered an error building the key provider";
            logger.error(msg, e);
            throw new IOException(msg, e);
        }
    } else {
        throw new IOException("The provided configuration does not support a encrypted repository");
    }
    // Build a factory using lambda which injects the encryptor
    final RecordWriterFactory recordWriterFactory = (file, idGenerator, compressed, createToc) -> {
        try {
            final TocWriter tocWriter = createToc ? new StandardTocWriter(TocUtil.getTocFile(file), false, false) : null;
            return new EncryptedSchemaRecordWriter(file, idGenerator, tocWriter, compressed, BLOCK_SIZE, idLookup, provenanceEventEncryptor, getConfig().getDebugFrequency());
        } catch (EncryptionException e) {
            logger.error("Encountered an error building the schema record writer factory: ", e);
            throw new IOException(e);
        }
    };
    // Build a factory using lambda which injects the encryptor
    final EventFileManager fileManager = new EventFileManager();
    final RecordReaderFactory recordReaderFactory = (file, logs, maxChars) -> {
        fileManager.obtainReadLock(file);
        try {
            EncryptedSchemaRecordReader tempReader = (EncryptedSchemaRecordReader) RecordReaders.newRecordReader(file, logs, maxChars);
            tempReader.setProvenanceEventEncryptor(provenanceEventEncryptor);
            return tempReader;
        } finally {
            fileManager.releaseReadLock(file);
        }
    };
    // Delegate the init to the parent impl
    super.init(recordWriterFactory, recordReaderFactory, eventReporter, authorizer, resourceFactory);
}
Also used : KeyProvider(org.apache.nifi.security.kms.KeyProvider) StandardTocWriter(org.apache.nifi.provenance.toc.StandardTocWriter) Logger(org.slf4j.Logger) DecoderException(org.apache.commons.codec.DecoderException) NiFiPropertiesLoader(org.apache.nifi.properties.NiFiPropertiesLoader) LoggerFactory(org.slf4j.LoggerFactory) SecretKeySpec(javax.crypto.spec.SecretKeySpec) IOException(java.io.IOException) KeyManagementException(java.security.KeyManagementException) Hex(org.apache.commons.codec.binary.Hex) RecordReaders(org.apache.nifi.provenance.serialization.RecordReaders) EventFileManager(org.apache.nifi.provenance.store.EventFileManager) TocWriter(org.apache.nifi.provenance.toc.TocWriter) Authorizer(org.apache.nifi.authorization.Authorizer) EventReporter(org.apache.nifi.events.EventReporter) NiFiProperties(org.apache.nifi.util.NiFiProperties) RecordReaderFactory(org.apache.nifi.provenance.store.RecordReaderFactory) SecretKey(javax.crypto.SecretKey) RecordWriterFactory(org.apache.nifi.provenance.store.RecordWriterFactory) TocUtil(org.apache.nifi.provenance.toc.TocUtil) KeyProvider(org.apache.nifi.security.kms.KeyProvider) KeyProviderFactory(org.apache.nifi.security.kms.KeyProviderFactory) EventFileManager(org.apache.nifi.provenance.store.EventFileManager) IOException(java.io.IOException) RecordWriterFactory(org.apache.nifi.provenance.store.RecordWriterFactory) KeyManagementException(java.security.KeyManagementException) RecordReaderFactory(org.apache.nifi.provenance.store.RecordReaderFactory) StandardTocWriter(org.apache.nifi.provenance.toc.StandardTocWriter) SecretKey(javax.crypto.SecretKey) StandardTocWriter(org.apache.nifi.provenance.toc.StandardTocWriter) TocWriter(org.apache.nifi.provenance.toc.TocWriter)

Aggregations

IOException (java.io.IOException)3 EventFileManager (org.apache.nifi.provenance.store.EventFileManager)3 Authorizer (org.apache.nifi.authorization.Authorizer)2 EventReporter (org.apache.nifi.events.EventReporter)2 LuceneEventIndex (org.apache.nifi.provenance.index.lucene.LuceneEventIndex)2 IndexManager (org.apache.nifi.provenance.lucene.IndexManager)2 SimpleIndexManager (org.apache.nifi.provenance.lucene.SimpleIndexManager)2 RecordReaders (org.apache.nifi.provenance.serialization.RecordReaders)2 RecordReaderFactory (org.apache.nifi.provenance.store.RecordReaderFactory)2 RecordWriterFactory (org.apache.nifi.provenance.store.RecordWriterFactory)2 StandardTocWriter (org.apache.nifi.provenance.toc.StandardTocWriter)2 TocUtil (org.apache.nifi.provenance.toc.TocUtil)2 TocWriter (org.apache.nifi.provenance.toc.TocWriter)2 NiFiProperties (org.apache.nifi.util.NiFiProperties)2 Logger (org.slf4j.Logger)2 LoggerFactory (org.slf4j.LoggerFactory)2 File (java.io.File)1 Files (java.nio.file.Files)1 KeyManagementException (java.security.KeyManagementException)1 Collections (java.util.Collections)1