提交 f49d6258 编写于 作者: K Kohsuke Kawaguchi

[FIXED JENKINS-11251]

The actual meat of the change is in remoting.
上级 9a178aa8
......@@ -55,6 +55,9 @@ Upcoming changes</a>
<!-- Record your changes in the trunk here. -->
<div id="trunk" style="display:none"><!--=TRUNK-BEGIN=-->
<ul class=image>
<li class=bug>
Fixed a synchronization problem between master/slave data communication.
(<a href="https://issues.jenkins-ci.org/browse/JENKINS-11251">issue 11251</a>)
<li class=rfe>
Added a mechanism to filter extension points as they are discovered.
<li class=rfe>
......
......@@ -1456,6 +1456,16 @@ public final class FilePath implements Serializable {
* Writes to this file.
* If this file already exists, it will be overwritten.
* If the directory doesn't exist, it will be created.
*
* <P>
* I/O operation to remote {@link FilePath} happens asynchronously, meaning write operations to the returned
* {@link OutputStream} will return without receiving a confirmation from the remote that the write happened.
* I/O operations also happens asynchronously from the {@link Channel#call(Callable)} operations, so if
* you write to a remote file and then execute {@link Channel#call(Callable)} and try to access the newly copied
* file, it might not be fully written yet.
*
* <p>
*
*/
public OutputStream write() throws IOException, InterruptedException {
if(channel==null) {
......@@ -1596,10 +1606,16 @@ public final class FilePath implements Serializable {
}
});
// make sure the write fully happens before we return.
// make sure the writes fully got delivered to 'os' before we return.
// this is needed because I/O operation is asynchronous
syncIO();
}
/**
* With fix to JENKINS-11251 (remoting 2.15), this is no longer necessary.
* But I'm keeping it for a while so that users who manually deploy slave.jar has time to deploy new version
* before this goes away.
*/
private void syncIO() throws InterruptedException {
try {
if (channel!=null)
......
......@@ -189,7 +189,7 @@ THE SOFTWARE.
<dependency>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>remoting</artifactId>
<version>2.13</version>
<version>2.16</version>
</dependency>
<dependency>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册