You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2011/05/25 11:53:47 UTC

[jira] [Closed] (SSHD-118) uploading and then renaming a file doesn't work (on windows)

     [ https://issues.apache.org/jira/browse/SSHD-118?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Guillaume Nodet closed SSHD-118.
--------------------------------

    Resolution: Duplicate

> uploading and then renaming a file doesn't work (on windows)
> ------------------------------------------------------------
>
>                 Key: SSHD-118
>                 URL: https://issues.apache.org/jira/browse/SSHD-118
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 0.5.0
>         Environment: windows xp professional sun jdk 1.5.0.22, jre 1.6
> windows 2003 server SP2 sun jdk jre 1.5.0.22
>            Reporter: Otto Frost
>            Priority: Critical
>         Attachments: NativeSshFile.diff
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> I logon, and then 
> put xx xx
> rename xx yy
> O1706@WKE198515 ~
> $ sftp -oport=2222 a@localhost
> Connecting to localhost...
> a@localhost's password:
> sftp> cd tmp
> sftp> put xx
> Uploading xx to /C:/NWDS7.1EHP1/workspace/minasshd_custom/tmp/xx
> xx                                            100% 1039     1.0KB/s   00:00
> sftp> rename xx yy
> Couldn't rename file "/C:/NWDS7.1EHP1/workspace/minasshd_custom/tmp/xx" to "/C:/
> NWDS7.1EHP1/workspace/minasshd_custom/tmp/yy": Failure
> sftp>
> The problem is that the file isn't closed after uploading, SftpSubSystem.process SSH_FXP_WRITE
> NativeSshFile.createOutputStream doesn't close the file, even though the close method is called.
> I can't rename the file from the os either because mina sshd holds it locked after upload. When mina sshd is shut down I can rename the file. After restarting minasshd the file can be renamed (from mina sshd or from the os).
> Here is the correction:
> class NativeSshFile
> 	public void truncate() throws IOException {
> 		// e.on modification
> 		// permission check
> 		// and close the raf
> 		if (!isWritable()) {
> 			throw new IOException("No write permission : " + file.getName());
> 		}
> 		RandomAccessFile raf = new RandomAccessFile(file, "rw");
> 		boolean bIOExcpetion = false;
> 		IOException ioException = null;
> 		if (raf != null) {
> 			try {
> 				raf.setLength(0);
> 			} catch (IOException e) {
> 				e.printStackTrace();
> 				ioException = e;
> 				bIOExcpetion = true;
> 			} finally {
> 				if (raf != null)
> 					raf.close();
> 			}
> 		}
> 		if (bIOExcpetion)
> 			throw ioException;
> 	}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira