You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by tp...@apache.org on 2025/05/09 18:29:18 UTC

(nifi) branch main updated: NIFI-14553 Workaround for NPE in ListSmb due to DFS folders having no target mapping

This is an automated email from the ASF dual-hosted git repository.

tpalfy 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 15a46ce589 NIFI-14553 Workaround for NPE in ListSmb due to DFS folders having no target mapping
15a46ce589 is described below

commit 15a46ce589f2aff119bcc4b2be6ab3160b01469d
Author: Peter Turcsanyi <tu...@apache.org>
AuthorDate: Thu May 8 22:30:45 2025 +0200

    NIFI-14553 Workaround for NPE in ListSmb due to DFS folders having no target mapping
    
    This closes #9925.
    
    Signed-off-by: Tamas Palfy <tp...@apache.org>
---
 .../org/apache/nifi/services/smb/SmbjClientService.java    | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java b/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
index 6e0ab503b6..71ec38ee27 100644
--- a/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
+++ b/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-client/src/main/java/org/apache/nifi/services/smb/SmbjClientService.java
@@ -40,6 +40,7 @@ import java.io.OutputStream;
 import java.net.URI;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.stream.Stream;
 
 class SmbjClientService implements SmbClientService {
@@ -89,6 +90,19 @@ class SmbjClientService implements SmbClientService {
                 } else {
                     throw e;
                 }
+            } catch (NullPointerException e) {
+                // workaround for https://github.com/hierynomus/smbj/issues/869
+                final boolean isNpeFromGetDiskEntry = Optional.ofNullable(e.getStackTrace())
+                        .filter(st -> st.length > 0)
+                        .map(st -> st[0])
+                        .map(ste -> ste.getClassName().equals(DiskShare.class.getName()) && ste.getMethodName().equals("getDiskEntry"))
+                        .orElse(false);
+                if (isNpeFromGetDiskEntry) {
+                    logger.warn("Could not list directory [{}/{}] because possibly no target is mapped to the directory in the DFS namespace", serviceLocation, directoryPath, e);
+                    return Stream.empty();
+                } else {
+                    throw e;
+                }
             }
 
             return stream(directory::spliterator, 0, false)