[ 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

        

Reply via email to