[ http://jira.codehaus.org/browse/WAGON-64?page=comments#action_79088 ]
Caleb Lyness commented on WAGON-64:
-----------------------------------
And again....
When I use jdb and step through the code the problem does not occur. Race
condition perhaps?
If I just run using jdb the problem still occurs.
I added some more code, which now checks if the directory actually exists
before continuing further. Now the directory does exist and
everything carries on happily.
protected void createParentDirectories( File destination )
throws TransferFailedException
{
System.out.println("Destination file: "+destination);
File destinationDirectory = destination.getParentFile();
System.out.println("Destination directory: "+destinationDirectory);
if ( destinationDirectory != null && !destinationDirectory.exists() )
{
System.out.println("Destination does not exist... create it...");
if ( !destinationDirectory.mkdirs() )
{
if (destinationDirectory.exists()) {
System.out.println("mkdirs failed. But directory
exists...");
} else {
System.out.println("Failed to create
file:"+destinationDirectory);
System.out.println("Problem ignored");
//throw new TransferFailedException(
// "Specified destination directory cannot be created: " +
destinationDirectory );
}
} else {
System.out.println("Directory created");
}
} else {
System.out.println("Directory exists (or not specified)");
}
}
Why does the first check fail and the second not?????
> File cannot be created error...
> -------------------------------
>
> Key: WAGON-64
> URL: http://jira.codehaus.org/browse/WAGON-64
> Project: wagon
> Issue Type: Bug
> Components: wagon-file
> Affects Versions: 1.0-alpha-2, 1.0-alpha-3, 1.0-alpha-4, 1.0-alpha-5,
> 1.0-alpha-6, 1.0-alpha-7
> Reporter: Caleb Lyness
>
> I am using maven 1.0 to build and deploy. As of a couple of days back I
> started getting deploy problems.
> I am completely lost as to explain the error and desperately would like some
> one to shed some light
> I am deploying to maven repository which lives in a windows share.
> The repository is defined as follows in the project.properties file:
> maven.repo.list=internal
> maven.repo.internal=file://
> maven.repo.internal.directory=\\\\192.168.150.7\\Maven.Internal.Repo
> This has been working for nearly a year now. (An aside any other arrangment
> of URL sepecification always results
> in the deployment to the local host... yes I have tried all combinations and
> read the stuff out there. Makes no difference)
> It now fails with the following error:
> Will deploy to 1 repository(ies): internal
> Deploying to repository: internal
> Uploading to System/poms/Service-1.4.0.pom:
> .................... (6K)
> Failed to deploy to: internal Reason:
> org.apache.maven.wagon.TransferFailedException: Specified destination
> directory cannot be created: \\192.168.150.7\Maven.Internal.Repo\System\poms
> org.apache.maven.wagon.TransferFailedException: Specified destination
> directory cannot be created: \\192.168.150.7\Maven.Internal.Repo\System\poms
> at
> org.apache.maven.wagon.AbstractWagon.createParentDirectories(AbstractWagon.java:169)
> at
> org.apache.maven.wagon.providers.file.FileWagon.fillOutputData(FileWagon.java:82)
> at org.apache.maven.wagon.StreamWagon.put(StreamWagon.java:133)
> at
> org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deployFiles(DefaultArtifactDeployer.java:407)
> at
> org.apache.maven.artifact.deployer.DefaultArtifactDeployer.doDeploy(DefaultArtifactDeployer.java:324)
> at
> org.apache.maven.artifact.deployer.DefaultArtifactDeployer.handleDeploy(DefaultArtifactDeployer.java:131)
> at
> org.apache.maven.artifact.deployer.DefaultArtifactDeployer.deploy(DefaultArtifactDeployer.java:102)
> at
> org.apache.maven.artifact.deployer.DeployBean.deploy(DeployBean.java:142)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> Notice how the first upload worked. While the second one dies while trying to
> create the parent directly (which does exist).
> The first upload must have executed exactly the same code!
> I have updated wagon jars the plugin is using and this does not modify the
> error.
> in AbstractWagon.java the failing code is:
> protected void createParentDirectories(File destination)
> throws TransferFailedException
> {
> File destinationDirectory = destination.getParentFile();
> if(destinationDirectory != null && !destinationDirectory.exists() &&
> !destinationDirectory.mkdirs())
> throw new TransferFailedException("Specified destination
> directory cannot be created: " + destinationDirectory);
> else
> return;
> }
> I wrote a quick test which runs on the same machine:
> System.out.println("Test: ");
> File destination = new
> File("\\\\192.168.150.7\\Maven.Internal.Repo\\System\\poms\\test-file");
> File destinationDirectory = destination.getParentFile();
> if (destinationDirectory != null
> && !destinationDirectory.exists()
> && !destinationDirectory.mkdirs())
> System.out.println("Failed!");
> else
> System.out.println("Ok!");
>
> destination.createNewFile();
>
> if (destinationDirectory != null
> && !destinationDirectory.exists()
> && !destinationDirectory.mkdirs())
> System.out.println("Failed!");
> else
> System.out.println("Ok!");
> This works fine. I get an empty file on the share.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira