Merge branch 'support/nifi-1.x' of https://gitbox.apache.org/repos/asf/nifi into support/nifi-1.x

This commit is contained in:
Pierre Villard 2024-07-07 19:33:19 +02:00
commit 7d72664854
No known key found for this signature in database
GPG Key ID: F92A93B30C07C6D5
26 changed files with 107 additions and 20 deletions

View File

@ -47,6 +47,7 @@ import org.apache.nifi.remote.io.socket.NetworkUtils;
import org.apache.nifi.security.util.ClientAuth;
import org.apache.nifi.ssl.RestrictedSSLContextService;
import org.apache.nifi.ssl.SSLContextService;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import javax.net.ssl.SSLContext;
import java.io.IOException;
@ -70,6 +71,7 @@ import java.util.concurrent.LinkedBlockingQueue;
@WritesAttribute(attribute = "beats.sequencenumber", description = "The sequence number of the message included for batches containing single messages"),
@WritesAttribute(attribute = "mime.type", description = "The mime.type of the content which is application/json")
})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ListenBeats extends AbstractProcessor {
public static final PropertyDescriptor SSL_CONTEXT_SERVICE = new PropertyDescriptor.Builder()

View File

@ -41,6 +41,7 @@ import org.apache.nifi.security.crypto.key.StandardDerivedKeySpec;
import org.apache.nifi.security.crypto.key.detection.DetectedDerivedKeyParameterSpecReader;
import org.apache.nifi.security.crypto.key.detection.DetectedDerivedKeyProvider;
import org.apache.nifi.security.crypto.key.io.ByteBufferSearch;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import org.bouncycastle.util.encoders.Hex;
import javax.crypto.Cipher;
@ -70,6 +71,7 @@ import java.util.Set;
"The salt format indicates the Key Derivation Function that the Processor uses to generate a secret key based on a configured password. " +
"The Processor derives keys with a size of 128 bits according to the conventions implemented in NiFi 0.5.0."
)
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class DecryptContent extends AbstractProcessor {
static final PropertyDescriptor CIPHER_ALGORITHM_MODE = new PropertyDescriptor.Builder()

View File

@ -34,6 +34,7 @@ import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.io.StreamCallback;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.processors.cipher.io.DecryptStreamCallback;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
@ -66,6 +67,7 @@ import java.util.Set;
@WritesAttribute(attribute = CipherAttributeKey.PBE_SYMMETRIC_CIPHER, description = "Password-Based Encryption Block Cipher"),
@WritesAttribute(attribute = CipherAttributeKey.PBE_DIGEST_ALGORITHM, description = "Password-Based Encryption Digest Algorithm"),
})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class DecryptContentCompatibility extends AbstractProcessor {
static final PropertyDescriptor ENCRYPTION_SCHEME = new PropertyDescriptor.Builder()

View File

@ -49,6 +49,7 @@ import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.exception.FlowFileHandlingException;
import org.apache.nifi.processor.io.InputStreamCallback;
import org.apache.nifi.processor.io.OutputStreamCallback;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import org.apache.poi.hmef.Attachment;
import org.apache.poi.hmef.HMEFMessage;
@ -64,6 +65,7 @@ import org.apache.poi.hmef.HMEFMessage;
@WritesAttribute(attribute = "email.tnef.attachment.parent.filename ", description = "The filename of the parent FlowFile"),
@WritesAttribute(attribute = "email.tnef.attachment.parent.uuid", description = "The UUID of the original FlowFile.")})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ExtractTNEFAttachments extends AbstractProcessor {
public static final String ATTACHMENT_ORIGINAL_FILENAME = "email.tnef.attachment.parent.filename";
public static final String ATTACHMENT_ORIGINAL_UUID = "email.tnef.attachment.parent.uuid";

View File

@ -40,6 +40,7 @@ import org.apache.nifi.security.util.ClientAuth;
import org.apache.nifi.security.util.TlsConfiguration;
import org.apache.nifi.ssl.RestrictedSSLContextService;
import org.apache.nifi.ssl.SSLContextService;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import org.springframework.util.StringUtils;
import org.subethamail.smtp.MessageContext;
import org.subethamail.smtp.MessageHandlerFactory;
@ -78,6 +79,7 @@ import java.util.concurrent.TimeUnit;
@WritesAttribute(attribute = "smtp.from", description = "The value used during MAIL FROM (i.e. envelope)"),
@WritesAttribute(attribute = "smtp.recipient.*", description = "The values used during RCPT TO (i.e. envelope)"),
@WritesAttribute(attribute = "mime.type", description = "Mime type of the message")})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ListenSMTP extends AbstractSessionFactoryProcessor {
static final PropertyDescriptor SMTP_PORT = new PropertyDescriptor.Builder()

View File

@ -53,7 +53,7 @@ import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
@EventDriven
@SideEffectFree
@ -65,6 +65,7 @@ import org.apache.nifi.processor.util.StandardValidators;
@WritesAttributes({
@WritesAttribute(attribute = "enrich.dns.record*.group*", description = "The captured fields of the DNS query response for each of the records received"),
})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class QueryDNS extends AbstractEnrichProcessor {
public static final PropertyDescriptor DNS_QUERY_TYPE = new PropertyDescriptor.Builder()

View File

@ -38,7 +38,7 @@ import org.apache.nifi.processor.ProcessSession;
import org.apache.nifi.processor.Relationship;
import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import java.io.IOException;
import java.util.ArrayList;
@ -59,6 +59,7 @@ import java.util.concurrent.TimeUnit;
@WritesAttributes({
@WritesAttribute(attribute = "enrich.dns.record*.group*", description = "The captured fields of the Whois query response for each of the records received"),
})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class QueryWhois extends AbstractEnrichProcessor {
public static final AllowableValue BEGIN_END = new AllowableValue("Begin/End", "Begin/End",

View File

@ -212,9 +212,33 @@ public abstract class AbstractHadoopProcessor extends AbstractProcessor implemen
@Override
public String getClassloaderIsolationKey(final PropertyContext context) {
class ClassloaderIsolationKeyBuilder {
private static final String SEPARATOR = "__";
private final StringBuilder sb = new StringBuilder();
void add(final String value) {
if (value != null) {
if (sb.length() > 0) {
sb.append(SEPARATOR);
}
sb.append(value);
}
}
String build() {
return sb.length() > 0 ? sb.toString() : null;
}
}
final ClassloaderIsolationKeyBuilder builder = new ClassloaderIsolationKeyBuilder();
builder.add(context.getProperty(HADOOP_CONFIGURATION_RESOURCES).getValue());
builder.add(context.getProperty(ADDITIONAL_CLASSPATH_RESOURCES).getValue());
final String explicitKerberosPrincipal = context.getProperty(kerberosProperties.getKerberosPrincipal()).evaluateAttributeExpressions().getValue();
if (explicitKerberosPrincipal != null) {
return explicitKerberosPrincipal;
builder.add(explicitKerberosPrincipal);
}
try {
@ -222,20 +246,20 @@ public abstract class AbstractHadoopProcessor extends AbstractProcessor implemen
if (credentialsService != null) {
final String credentialsServicePrincipal = credentialsService.getPrincipal();
if (credentialsServicePrincipal != null) {
return credentialsServicePrincipal;
builder.add(credentialsServicePrincipal);
}
}
final KerberosUserService kerberosUserService = context.getProperty(KERBEROS_USER_SERVICE).asControllerService(KerberosUserService.class);
if (kerberosUserService != null) {
final KerberosUser kerberosUser = kerberosUserService.createKerberosUser();
return kerberosUser.getPrincipal();
builder.add(kerberosUser.getPrincipal());
}
} catch (IllegalStateException e) {
return null;
// the Kerberos controller service is disabled, therefore this part of the isolation key cannot be determined yet
}
return null;
return builder.build();
}
@Override

View File

@ -321,6 +321,7 @@ public class ConnectionStatusSnapshotDTO implements Cloneable {
other.setQueuedSize(getQueuedSize());
other.setPercentUseBytes(getPercentUseBytes());
other.setPercentUseCount(getPercentUseCount());
other.setFlowFileAvailability(getFlowFileAvailability());
return other;
}

View File

@ -549,11 +549,32 @@ public class ProcessGroupStatusSnapshotDTO implements Cloneable {
other.setProcessingNanos(getProcessingNanos());
other.setConnectionStatusSnapshots(copy(getConnectionStatusSnapshots()));
other.setProcessorStatusSnapshots(copy(getProcessorStatusSnapshots()));
other.setRemoteProcessGroupStatusSnapshots(copy(getRemoteProcessGroupStatusSnapshots()));
other.setInputPortStatusSnapshots(copy(getInputPortStatusSnapshots()));
other.setOutputPortStatusSnapshots(copy(getOutputPortStatusSnapshots()));
if (connectionStatusSnapshots != null) {
final List<ConnectionStatusSnapshotEntity> collectionStatusSnapshotEntities = new ArrayList<>();
for (final ConnectionStatusSnapshotEntity connectionStatusSnapshotEntity : connectionStatusSnapshots) {
collectionStatusSnapshotEntities.add(connectionStatusSnapshotEntity.clone());
}
other.setConnectionStatusSnapshots(collectionStatusSnapshotEntities);
}
if (processorStatusSnapshots != null) {
final List<ProcessorStatusSnapshotEntity> processorStatusSnapshotEntities = new ArrayList<>();
for (final ProcessorStatusSnapshotEntity processorStatusSnapshotEntity : processorStatusSnapshots) {
processorStatusSnapshotEntities.add(processorStatusSnapshotEntity.clone());
}
other.setProcessorStatusSnapshots(processorStatusSnapshotEntities);
}
if (remoteProcessGroupStatusSnapshots != null) {
final List<RemoteProcessGroupStatusSnapshotEntity> remoteProcessGroupStatusSnapshotEntities = new ArrayList<>();
for (final RemoteProcessGroupStatusSnapshotEntity remoteProcessGroupStatusSnapshotEntity : remoteProcessGroupStatusSnapshots) {
remoteProcessGroupStatusSnapshotEntities.add(remoteProcessGroupStatusSnapshotEntity.clone());
}
other.setRemoteProcessGroupStatusSnapshots(remoteProcessGroupStatusSnapshotEntities);
}
other.setInputPortStatusSnapshots(copyPortStatusSnapshots(inputPortStatusSnapshots));
other.setOutputPortStatusSnapshots(copyPortStatusSnapshots(outputPortStatusSnapshots));
if (processGroupStatusSnapshots != null) {
final List<ProcessGroupStatusSnapshotEntity> childGroups = new ArrayList<>();
@ -566,11 +587,15 @@ public class ProcessGroupStatusSnapshotDTO implements Cloneable {
return other;
}
private <T> Collection<T> copy(final Collection<T> original) {
if (original == null) {
return null;
private Collection<PortStatusSnapshotEntity> copyPortStatusSnapshots(Collection<PortStatusSnapshotEntity> portStatusSnapshots) {
if (portStatusSnapshots != null) {
final List<PortStatusSnapshotEntity> portStatusSnapshotEntities = new ArrayList<>();
for (final PortStatusSnapshotEntity portStatusSnapshotEntity : portStatusSnapshots) {
portStatusSnapshotEntities.add(portStatusSnapshotEntity.clone());
}
return portStatusSnapshotEntities;
}
return new ArrayList<T>(original);
return null;
}
}

View File

@ -67,6 +67,7 @@ public class ConnectionStatisticsSnapshotEntity extends Entity implements Readab
@Override
public ConnectionStatisticsSnapshotEntity clone() {
final ConnectionStatisticsSnapshotEntity other = new ConnectionStatisticsSnapshotEntity();
other.setId(this.getId());
other.setCanRead(this.getCanRead());
other.setConnectionStatisticsSnapshot(this.getConnectionStatisticsSnapshot().clone());

View File

@ -66,6 +66,7 @@ public class ConnectionStatusSnapshotEntity extends Entity implements ReadablePe
@Override
public ConnectionStatusSnapshotEntity clone() {
final ConnectionStatusSnapshotEntity other = new ConnectionStatusSnapshotEntity();
other.setId(this.getId());
other.setCanRead(this.getCanRead());
other.setConnectionStatusSnapshot(this.getConnectionStatusSnapshot().clone());

View File

@ -67,6 +67,7 @@ public class PortStatusSnapshotEntity extends Entity implements ReadablePermissi
@Override
public PortStatusSnapshotEntity clone() {
final PortStatusSnapshotEntity other = new PortStatusSnapshotEntity();
other.setId(this.getId());
other.setCanRead(this.getCanRead());
other.setPortStatusSnapshot(this.getPortStatusSnapshot().clone());

View File

@ -66,6 +66,7 @@ public class ProcessGroupStatusSnapshotEntity extends Entity implements Readable
@Override
public ProcessGroupStatusSnapshotEntity clone() {
final ProcessGroupStatusSnapshotEntity other = new ProcessGroupStatusSnapshotEntity();
other.setId(this.getId());
other.setCanRead(this.getCanRead());
other.setProcessGroupStatusSnapshot(this.getProcessGroupStatusSnapshot().clone());

View File

@ -66,6 +66,7 @@ public class ProcessorStatusSnapshotEntity extends Entity implements ReadablePer
@Override
public ProcessorStatusSnapshotEntity clone() {
final ProcessorStatusSnapshotEntity other = new ProcessorStatusSnapshotEntity();
other.setId(this.getId());
other.setCanRead(this.getCanRead());
other.setProcessorStatusSnapshot(this.getProcessorStatusSnapshot().clone());

View File

@ -67,6 +67,7 @@ public class RemoteProcessGroupStatusSnapshotEntity extends Entity implements Re
@Override
public RemoteProcessGroupStatusSnapshotEntity clone() {
final RemoteProcessGroupStatusSnapshotEntity other = new RemoteProcessGroupStatusSnapshotEntity();
other.setId(this.getId());
other.setCanRead(this.getCanRead());
other.setRemoteProcessGroupStatusSnapshot(this.getRemoteProcessGroupStatusSnapshot().clone());

View File

@ -685,7 +685,11 @@ public class StatusMerger {
target.setFreeHeapBytes(target.getFreeHeapBytes() + toMerge.getFreeHeapBytes());
target.setFreeNonHeapBytes(target.getFreeNonHeapBytes() + toMerge.getFreeNonHeapBytes());
target.setMaxHeapBytes(target.getMaxHeapBytes() + toMerge.getMaxHeapBytes());
target.setMaxNonHeapBytes(target.getMaxNonHeapBytes() + toMerge.getMaxNonHeapBytes());
if (target.getMaxNonHeapBytes() != -1 && toMerge.getMaxNonHeapBytes() != -1) {
target.setMaxNonHeapBytes(target.getMaxNonHeapBytes() + toMerge.getMaxNonHeapBytes());
} else {
target.setMaxNonHeapBytes(-1L);
}
double systemLoad = target.getProcessorLoadAverage();
double toMergeSystemLoad = toMerge.getProcessorLoadAverage();
if (systemLoad >= 0 && toMergeSystemLoad >= 0) {

View File

@ -51,6 +51,7 @@ import org.apache.nifi.serialization.record.Record;
import org.apache.nifi.serialization.record.RecordField;
import org.apache.nifi.serialization.record.RecordFieldType;
import org.apache.nifi.serialization.record.RecordSchema;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import javax.security.auth.login.LoginException;
import java.util.ArrayList;
@ -69,6 +70,7 @@ import java.util.stream.Collectors;
@CapabilityDescription("Lookup a record from Kudu Server associated with the specified key. Binary columns are base64 encoded. Only one matched row will be returned")
@Tags({"lookup", "enrich", "key", "value", "kudu"})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class KuduLookupService extends AbstractControllerService implements RecordLookupService {
public static final PropertyDescriptor KUDU_MASTERS = new PropertyDescriptor.Builder()

View File

@ -61,6 +61,7 @@ import org.apache.nifi.serialization.record.Record;
import org.apache.nifi.serialization.record.RecordField;
import org.apache.nifi.serialization.record.RecordFieldType;
import org.apache.nifi.serialization.record.RecordSet;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import javax.security.auth.login.LoginException;
import java.io.InputStream;
@ -88,7 +89,7 @@ import static org.apache.nifi.expression.ExpressionLanguageScope.VARIABLE_REGIST
"to the specified Kudu's table. The schema for the Kudu table is inferred from the schema of the Record Reader." +
" If any error occurs while reading records from the input, or writing records to Kudu, the FlowFile will be routed to failure")
@WritesAttribute(attribute = "record.count", description = "Number of records written to Kudu")
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class PutKudu extends AbstractKuduProcessor {
static final AllowableValue FAILURE_STRATEGY_ROUTE = new AllowableValue("route-to-failure", "Route to Failure",

View File

@ -39,6 +39,7 @@ import org.apache.nifi.serialization.record.RecordSchema;
import org.apache.nifi.serialization.record.RecordSet;
import org.apache.nifi.ssl.RestrictedSSLContextService;
import org.apache.nifi.ssl.SSLContextService;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import org.eclipse.jetty.server.Server;
import java.io.IOException;
@ -55,7 +56,7 @@ import java.util.function.Function;
@Tags({"record", "send", "write", "prometheus"})
@CapabilityDescription("Specifies a Record Sink Service that exposes data points to a Prometheus scraping service. Numeric fields are exposed as Gauges, String fields are the "
+ "label values for the gauges, and all other fields are ignored.")
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class PrometheusRecordSink extends AbstractControllerService implements RecordSinkService {
private volatile PrometheusServer prometheusServer;

View File

@ -39,6 +39,7 @@ import org.apache.nifi.scheduling.SchedulingStrategy;
import org.apache.nifi.ssl.RestrictedSSLContextService;
import org.apache.nifi.ssl.SSLContextService;
import org.apache.nifi.util.StringUtils;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import org.eclipse.jetty.server.Server;
import java.net.InetSocketAddress;
@ -57,6 +58,7 @@ import static org.apache.nifi.prometheus.util.PrometheusMetricsUtil.METRICS_STRA
+ "Prometheus endpoint) cannot be started (for example if two PrometheusReportingTask instances are started on the same port), this may cause a delay in "
+ "shutting down NiFi while it waits for the server resources to be cleaned up.")
@DefaultSchedule(strategy = SchedulingStrategy.TIMER_DRIVEN, period = "60 sec")
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class PrometheusReportingTask extends AbstractReportingTask {
private PrometheusServer prometheusServer;

View File

@ -46,6 +46,7 @@ import org.apache.nifi.processor.exception.ProcessException;
import org.apache.nifi.processor.io.InputStreamCallback;
import org.apache.nifi.processor.io.OutputStreamCallback;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import java.io.BufferedInputStream;
import java.io.IOException;
@ -105,6 +106,7 @@ import static org.apache.nifi.flowfile.attributes.FragmentAttributes.copyAttribu
+ "<sql>.args.N.type attribute that indicates how the value should be interpreted when inserting it into the database."
+ "The prefix for this attribute ('sql', e.g.) is determined by the SQL Parameter Attribute Prefix property.")
})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ConvertJSONToSQL extends AbstractProcessor {
private static final String UPDATE_TYPE = "UPDATE";
private static final String INSERT_TYPE = "INSERT";

View File

@ -50,6 +50,7 @@ import org.apache.nifi.remote.io.socket.NetworkUtils;
import org.apache.nifi.security.util.ClientAuth;
import org.apache.nifi.ssl.RestrictedSSLContextService;
import org.apache.nifi.ssl.SSLContextService;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import javax.net.ssl.SSLContext;
import java.io.IOException;
@ -80,6 +81,7 @@ import java.util.concurrent.LinkedBlockingQueue;
@WritesAttribute(attribute="mime.type", description="The mime.type of the content which is text/plain")
})
@SeeAlso({ParseSyslog.class})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ListenRELP extends AbstractProcessor {
public static final PropertyDescriptor SSL_CONTEXT_SERVICE = new PropertyDescriptor.Builder()

View File

@ -54,6 +54,7 @@ import org.apache.nifi.serialization.record.Record;
import org.apache.nifi.serialization.record.RecordSchema;
import org.apache.nifi.ssl.RestrictedSSLContextService;
import org.apache.nifi.ssl.SSLContextService;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLPeerUnverifiedException;
@ -110,6 +111,7 @@ import static org.apache.nifi.processor.util.listen.ListenerProperties.NETWORK_I
@WritesAttribute(attribute="client.certificate.subject.dn", description="For connections using mutual TLS, the Distinguished Name of the " +
"client certificate's owner (subject) is attached to the FlowFile.")
})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ListenTCPRecord extends AbstractProcessor {
private static final String CLIENT_CERTIFICATE_SUBJECT_DN_ATTRIBUTE = "client.certificate.subject.dn";
private static final String CLIENT_CERTIFICATE_ISSUER_DN_ATTRIBUTE = "client.certificate.issuer.dn";

View File

@ -54,6 +54,7 @@ import org.apache.nifi.processor.io.InputStreamCallback;
import org.apache.nifi.processor.io.OutputStreamCallback;
import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.stream.io.StreamUtils;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import javax.validation.Validation;
import java.io.BufferedOutputStream;
@ -92,7 +93,7 @@ import java.util.TimeZone;
@WritesAttribute(attribute = "cef.header.severity", description = "The severity of the CEF message."),
@WritesAttribute(attribute = "cef.extension.*", description = "The key and value generated by the parsing of the message.")})
@SeeAlso({ParseSyslog.class})
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class ParseCEF extends AbstractProcessor {
// There should be no date format other than internationally agreed formats...

View File

@ -31,6 +31,7 @@ import org.apache.nifi.processor.util.StandardValidators;
import org.apache.nifi.reporting.AbstractReportingTask;
import org.apache.nifi.reporting.InitializationException;
import org.apache.nifi.reporting.ReportingContext;
import org.apache.nifi.annotation.documentation.DeprecationNotice;
import java.io.IOException;
import java.util.ArrayList;
@ -48,6 +49,7 @@ import java.util.concurrent.atomic.AtomicReference;
+ " reported include JVM Metrics (optional); the following 5-minute NiFi statistics: FlowFiles Received, Bytes Received,"
+ " FlowFiles Sent, Bytes Sent, Bytes Read, Bytes Written, Total Task Duration; and the current values for"
+ " FlowFiles Queued, Bytes Queued, and number of Active Threads.")
@DeprecationNotice(reason = "This component is deprecated and will be removed in NiFi 2.x.")
public class StandardGangliaReporter extends AbstractReportingTask {
public static final PropertyDescriptor HOSTNAME = new PropertyDescriptor.Builder()