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>

Reply via email to