[ 
https://issues.apache.org/jira/browse/NIFI-16385?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18119194#comment-18119194
 ] 

ASF subversion and git services commented on NIFI-16385:
--------------------------------------------------------

Commit 30f0f4c71a4522c6421f12eba81fd0d06e4f8648 in nifi's branch 
refs/heads/main from Peter Turcsanyi
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=30f0f4c71a4 ]

NIFI-16385 Made connection validation optional in SMB components (#11719)

Signed-off-by: Tamas Palfy <[email protected]>

> SMB processors fail if SMB2 ECHO is not supported by the server
> ---------------------------------------------------------------
>
>                 Key: NIFI-16385
>                 URL: https://issues.apache.org/jira/browse/NIFI-16385
>             Project: Apache NiFi
>          Issue Type: Bug
>            Reporter: Peter Turcsanyi
>            Assignee: Peter Turcsanyi
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> NIFI-12837 introduced connection health check because the underlying smbj 
> library can return stale connections from its pool. The NiFi side code can 
> handle the failed connection (reopen on exception) but it is more problematic 
> when DFS is used and the smbj client opens sessions to the linked servers 
> internally (not visible to our code) and it does not check if the cached 
> connection is alive or not.
> To solve the stale connection issue, the NiFi code intercepts the 
> "getConnection" call, validates the connection, and opens a new one if 
> necessary. The [health 
> check|https://github.com/apache/nifi/blob/751efb02f0360f89266d625cbda8e7c3a00465ee/nifi-extension-bundles/nifi-smb-bundle/nifi-smb-smbj-common/src/main/java/org/apache/nifi/smb/common/SmbClient.java#L80]
>  is performed via an SMB2 ECHO call. This approach properly works on Windows 
> Server and Linux/Samba but other servers (like Dell PowerScale) may reject 
> the ECHO. Actually, these servers strictly follow the SMB specification which 
> says about the [SMB2 
> ECHO|https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/fa23e613-2768-49e5-aa68-97c4bba72379]
>  request: _“If Connection.SessionTable is empty, the server SHOULD<405> 
> disconnect the connection.”_
> Result on the client side:
> {code:java}
> 2026-09-24 22:32:52,172 INFO [Packet Reader for 10.17.189.79, Original Thread 
> name: Timer-Driven Process Thread-2] c.h.s.t.tcp.direct.DirectTcpPacketReader 
> PacketReader e
> rror, got exception.
> com.hierynomus.protocol.transport.TransportException: java.io.EOFException: 
> EOF while reading packet
>         at 
> com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.readFully(DirectTcpPacketReader.java:72)
>         at 
> com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.readTcpHeader(DirectTcpPacketReader.java:59)
>         at 
> com.hierynomus.smbj.transport.tcp.direct.DirectTcpPacketReader.doRead(DirectTcpPacketReader.java:48)
>         at 
> com.hierynomus.smbj.transport.PacketReader.readPacket(PacketReader.java:75)
>         at 
> com.hierynomus.smbj.transport.PacketReader.run(PacketReader.java:53)
>         at java.base/java.lang.Thread.run(Thread.java:1583) {code}
> As the health check is critical for DFS only, it can be made optional for 
> environments where the server does not support it (and no DFS is in use).
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to