This is an automated email from the ASF dual-hosted git repository.
turcsanyi 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 1bd4169558 NIFI-10702 Clear server list on connection error in SMB
processors
1bd4169558 is described below
commit 1bd4169558c6825bf9f804bf9a48fc91c3d3da4a
Author: Gabor Kulik <[email protected]>
AuthorDate: Fri Nov 4 15:23:43 2022 +0100
NIFI-10702 Clear server list on connection error in SMB processors
This closes #6620.
Signed-off-by: Peter Turcsanyi <[email protected]>
---
nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/pom.xml | 4 ++++
.../src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java | 1 +
.../src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java | 1 +
.../test/java/org/apache/nifi/processors/smb/PutSmbFileTest.java | 5 +++++
nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/pom.xml | 4 ++++
.../org/apache/nifi/services/smb/SmbjClientProviderService.java | 8 +++++++-
nifi-nar-bundles/nifi-smb-bundle/pom.xml | 4 ----
7 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/pom.xml
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/pom.xml
index 2bab111eef..b2cb350967 100644
--- a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/pom.xml
+++ b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/pom.xml
@@ -53,6 +53,10 @@
<groupId>com.hierynomus</groupId>
<artifactId>smbj</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk18on</artifactId>
+ </dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
diff --git
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
index 9ed9a3c969..c03a846ab4 100644
---
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
+++
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
@@ -545,6 +545,7 @@ public class GetSmbFile extends AbstractProcessor {
} catch (Exception e) {
logger.error("Could not establish smb connection because of error
{}", new Object[]{e});
context.yield();
+ smbClient.getServerList().unregister(hostname);
}
}
}
diff --git
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
index d88561e895..43196d85a1 100644
---
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
+++
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
@@ -401,6 +401,7 @@ public class PutSmbFile extends AbstractProcessor {
} catch (Exception e) {
session.transfer(flowFiles, REL_FAILURE);
logger.error("Could not establish smb connection because of error
{}", new Object[]{e});
+ smbClient.getServerList().unregister(hostname);
}
}
}
diff --git
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/PutSmbFileTest.java
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/PutSmbFileTest.java
index e045fa6a87..e6192caf7d 100644
---
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/PutSmbFileTest.java
+++
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/PutSmbFileTest.java
@@ -21,6 +21,7 @@ import com.hierynomus.mssmb2.SMB2ShareAccess;
import com.hierynomus.smbj.SMBClient;
import com.hierynomus.smbj.auth.AuthenticationContext;
import com.hierynomus.smbj.connection.Connection;
+import com.hierynomus.smbj.server.ServerList;
import com.hierynomus.smbj.session.Session;
import com.hierynomus.smbj.share.DiskEntry;
import com.hierynomus.smbj.share.DiskShare;
@@ -59,6 +60,7 @@ public class PutSmbFileTest {
private DiskShare diskShare;
private DiskEntry diskEntry;
private File smbfile;
+ private ServerList serverList;
private ByteArrayOutputStream baOutputStream;
private final static String HOSTNAME = "smbhostname";
@@ -80,9 +82,12 @@ public class PutSmbFileTest {
diskShare = mock(DiskShare.class);
diskEntry = mock(DiskEntry.class);
smbfile = mock(File.class);
+ serverList = mock(ServerList.class);
baOutputStream = new ByteArrayOutputStream();
when(smbClient.connect(any(String.class))).thenReturn(connection);
+ when(smbClient.getServerList()).thenReturn(serverList);
+
when(connection.authenticate(any(AuthenticationContext.class))).thenReturn(session);
when(session.connectShare(SHARE)).thenReturn(diskShare);
when(diskShare.openFile(
diff --git a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/pom.xml
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/pom.xml
index f6d2a57427..cdafdd6b13 100644
--- a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/pom.xml
+++ b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/pom.xml
@@ -49,6 +49,10 @@
<groupId>com.hierynomus</groupId>
<artifactId>smbj</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.bouncycastle</groupId>
+ <artifactId>bcprov-jdk18on</artifactId>
+ </dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
diff --git
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientProviderService.java
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientProviderService.java
index e1de5e5bcf..70c9260a62 100644
---
a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientProviderService.java
+++
b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientProviderService.java
@@ -121,14 +121,16 @@ public class SmbjClientProviderService extends
AbstractControllerService impleme
@Override
public SmbClientService getClient() throws IOException {
- Connection connection = smbClient.connect(hostname, port);
+ Connection connection = null;
try {
+ connection = smbClient.connect(hostname, port);
return connectToShare(connection);
} catch (IOException e) {
getLogger().debug("Closing stale connection and trying to create a
new one for share " + getServiceLocation());
closeConnection(connection);
+ unregisterHost();
connection = smbClient.connect(hostname, port);
return connectToShare(connection);
@@ -160,6 +162,10 @@ public class SmbjClientProviderService extends
AbstractControllerService impleme
return new SmbjClientService(session, (DiskShare) share,
getServiceLocation());
}
+ private void unregisterHost() {
+ smbClient.getServerList().unregister(hostname);
+ }
+
private void closeConnection(Connection connection) {
try {
if (connection != null) {
diff --git a/nifi-nar-bundles/nifi-smb-bundle/pom.xml
b/nifi-nar-bundles/nifi-smb-bundle/pom.xml
index bf0570ef5d..c8d60c0820 100644
--- a/nifi-nar-bundles/nifi-smb-bundle/pom.xml
+++ b/nifi-nar-bundles/nifi-smb-bundle/pom.xml
@@ -47,10 +47,6 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>org.bouncycastle</groupId>
- <artifactId>bcprov-jdk18on</artifactId>
- </dependency>
<dependency>
<groupId>net.engio</groupId>
<artifactId>mbassador</artifactId>