This is an automated email from the ASF dual-hosted git repository.
pvillard pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 92830af2e9 NIFI-12888 In AbstractEmailProcessor check for expired
oauth2 token when determining whether mail receiver needs to be recreated.
92830af2e9 is described below
commit 92830af2e986dafe243f770bd672e6d969070746
Author: tpalfy <[email protected]>
AuthorDate: Mon Mar 11 15:31:11 2024 +0100
NIFI-12888 In AbstractEmailProcessor check for expired oauth2 token when
determining whether mail receiver needs to be recreated.
Signed-off-by: Pierre Villard <[email protected]>
This closes #8494.
---
.../nifi/processors/email/AbstractEmailProcessor.java | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git
a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
index 593fbcbfe7..3c5efc2bb3 100644
---
a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
+++
b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
@@ -22,6 +22,7 @@ import org.apache.nifi.components.AllowableValue;
import org.apache.nifi.components.PropertyDescriptor;
import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.oauth2.AccessToken;
import org.apache.nifi.oauth2.OAuth2AccessTokenProvider;
import org.apache.nifi.processor.AbstractProcessor;
import org.apache.nifi.processor.ProcessContext;
@@ -198,13 +199,14 @@ abstract class AbstractEmailProcessor<T extends
AbstractMailReceiver> extends Ab
private volatile boolean shouldSetDeleteFlag;
protected volatile Optional<OAuth2AccessTokenProvider>
oauth2AccessTokenProviderOptional;
+ protected volatile AccessToken oauth2AccessDetails;
@OnScheduled
public void onScheduled(final ProcessContext context) {
if (context.getProperty(OAUTH2_ACCESS_TOKEN_PROVIDER).isSet()) {
OAuth2AccessTokenProvider oauth2AccessTokenProvider =
context.getProperty(OAUTH2_ACCESS_TOKEN_PROVIDER).asControllerService(OAuth2AccessTokenProvider.class);
- oauth2AccessTokenProvider.getAccessDetails();
+ oauth2AccessDetails = oauth2AccessTokenProvider.getAccessDetails();
oauth2AccessTokenProviderOptional =
Optional.of(oauth2AccessTokenProvider);
} else {
@@ -307,7 +309,7 @@ abstract class AbstractEmailProcessor<T extends
AbstractMailReceiver> extends Ab
* and is ready to receive messages.
*/
private synchronized void initializeIfNecessary(ProcessContext context,
ProcessSession processSession) {
- if (this.messageReceiver == null) {
+ if (this.messageReceiver == null || isOauth2AccessDetailsRefreshed()) {
this.processSession = processSession;
this.messageReceiver = this.buildMessageReceiver(context);
@@ -324,6 +326,14 @@ abstract class AbstractEmailProcessor<T extends
AbstractMailReceiver> extends Ab
}
}
+ private boolean isOauth2AccessDetailsRefreshed() {
+ boolean oauthDetailsRefreshed =
this.oauth2AccessTokenProviderOptional.isPresent()
+ &&
+ (this.oauth2AccessDetails == null ||
!oauth2AccessDetails.equals(this.oauth2AccessTokenProviderOptional.get().getAccessDetails()));
+
+ return oauthDetailsRefreshed;
+ }
+
/**
* Extracts dynamic properties which typically represent the Java Mail
* properties from the {@link ProcessContext} returning them as instance of