[ https://issues.apache.org/jira/browse/SSHD-118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13021451#comment-13021451 ]
Otto Frost commented on SSHD-118: --------------------------------- added exception handling 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"); if (raf != null) { try { raf.setLength(0); } catch (IOException e) { e.printStackTrace(); } finally { raf.close(); } } } > 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 > 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 { > // modification > // permission check > // and close the raf > if (!isWritable()) { > throw new IOException("No write permission : " + > file.getName()); > } > RandomAccessFile raf = new RandomAccessFile(file, "rw"); > if (raf != null) { > raf.setLength(0); > raf.close(); > } > } -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira