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 @@
com.hierynomus
smbj
+
+ org.bouncycastle
+ bcprov-jdk18on
+
commons-io
commons-io
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 @@
com.hierynomus
smbj
+
+ org.bouncycastle
+ bcprov-jdk18on
+
org.testcontainers
testcontainers
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 @@
-
- org.bouncycastle
- bcprov-jdk18on
-
net.engio
mbassador