This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 170593 - Delete fallback code in InitialFileDistributor.java interacts badly with bugs in FileObj
Summary: Delete fallback code in InitialFileDistributor.java interacts badly with bugs...
Status: RESOLVED FIXED
Alias: None
Product: serverplugins
Classification: Unclassified
Component: Infrastructure (show other bugs)
Version: 6.x
Hardware: All Windows Vista
: P2 blocker (vote)
Assignee: Jiri Skrivanek
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-08-19 04:00 UTC by jsight
Modified: 2009-09-04 05:12 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jsight 2009-08-19 04:00:23 UTC
The following code tries to zero out locked files on windows:

   183             for (int i=0; i<garbages.length; i++) {
   184                 try {
   185                     garbages[i].delete();
   186                 } catch (java.io.IOException ioe) {
   187                     LOGGER.log(Level.FINER, null, ioe);
   188                     if (Utilities.isWindows()) {                        
   189                         String ext = garbages[i].getExt().toLowerCase(Locale.ENGLISH);
   190                         if ("jar".equals(ext) || "zip".equals(ext)) {
   191                             zeroOutArchive(garbages[i]);
   192                         } else {
   193                             throw ioe;
   194                         }
   195                     } else {
   196                         throw ioe;
   197                     }
   198                 }
   199             }

The problem is that the delete call fails, but still manages to call setValid(false).  This results in isValid returning 
false, and a FileNotFoundException when zeroOutArchive is called.

The exceptions are as follows:
FINEST [org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj]: setValid: false 
(C:\jsight\javadev\SalesStatsMonitor\dist\gfdeploy\ci-bayes-1.0.8.jar)
java.lang.Exception: Stack trace
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.setValid(FileObj.java:257)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj.delete(BaseFileObj.java:620)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj$2.call(BaseFileObj.java:580)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj$2.call(BaseFileObj.java:575)
	at org.netbeans.modules.masterfs.filebasedfs.FileBasedFileSystem.runAsInconsistent(FileBasedFileSystem.java:112)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.BaseFileObj.delete(BaseFileObj.java:588)
	at org.openide.filesystems.FileObject.delete(FileObject.java:359)
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor._distribute(InitialServerFileDistributor.java:185
)
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor.distribute(InitialServerFileDistributor.java:121)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.initialDistribute(TargetServer.java:249)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.deploy(TargetServer.java:616)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:192)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:135)
	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:103)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
	at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:357)
	at org.apache.tools.ant.Target.performTasks(Target.java:385)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
	at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:278)
	at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:497)
	at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)
FINEST [org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj]: setLastModified: -1 -> 1250650036869 
(C:\jsight\javadev\SalesStatsMonitor\dist\gfdeploy\ci-bayes-1.0.8.jar)
java.lang.Exception: Stack trace
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.setLastModified(FileObj.java:224)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.<init>(FileObj.java:78)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.create(FileObjectFactory.java:415)
	at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.getOrCreate(FileObjectFactory.java:391)
	at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.issueIfExist(FileObjectFactory.java:363)
	at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.getFileObject(FileObjectFactory.java:193)
	at 
org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObjectFactory.getValidFileObject(FileObjectFactory.java:632)
	at org.netbeans.modules.masterfs.filebasedfs.FileBasedFileSystem.getFileObject(FileBasedFileSystem.java:134)
	at org.netbeans.modules.masterfs.filebasedfs.FileBasedURLMapper.getFileObjects(FileBasedURLMapper.java:128)
	at org.netbeans.modules.masterfs.MasterURLMapper.getFileObjects(MasterURLMapper.java:62)
	at org.openide.filesystems.URLMapper.findFileObject(URLMapper.java:213)
	at org.openide.filesystems.FileUtil.toFileObject(FileUtil.java:889)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.LockForFile.releaseLock(LockForFile.java:286)
	at org.openide.filesystems.FileObject.delete(FileObject.java:361)
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor._distribute(InitialServerFileDistributor.java:185
)
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor.distribute(InitialServerFileDistributor.java:121)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.initialDistribute(TargetServer.java:249)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.deploy(TargetServer.java:616)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:192)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:135)
	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:103)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
	at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:357)
	at org.apache.tools.ant.Target.performTasks(Target.java:385)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
	at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:278)
	at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:497)
	at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)
INFO [org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor]
java.io.FileNotFoundException: FileObject C:\jsight\javadev\SalesStatsMonitor\dist\gfdeploy\ci-bayes-1.0.8.jar is not 
valid.
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.getOutputStream(FileObj.java:92)
	at org.netbeans.modules.masterfs.filebasedfs.fileobjects.FileObj.getOutputStream(FileObj.java:87)
	at org.openide.filesystems.FileObject.getOutputStream(FileObject.java:623)
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor.zeroOutArchive(InitialServerFileDistributor.java:
273)
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor._distribute(InitialServerFileDistributor.java:191
)
Caused: java.lang.RuntimeException
	at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor._distribute(InitialServerFileDistributor.java:215
)
[catch] at 
org.netbeans.modules.j2ee.deployment.impl.InitialServerFileDistributor.distribute(InitialServerFileDistributor.java:121)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.initialDistribute(TargetServer.java:249)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.deploy(TargetServer.java:616)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:192)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:135)
	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:103)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
	at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:357)
	at org.apache.tools.ant.Target.performTasks(Target.java:385)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
	at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
	at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
	at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
	at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:278)
	at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:497)
	at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:151)
INFO [org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment]
java.lang.NullPointerException
	at org.netbeans.modules.glassfish.javaee.ide.FastDeploy.initialDeploy(FastDeploy.java:102)
	at org.netbeans.modules.j2ee.deployment.impl.TargetServer.deploy(TargetServer.java:617)
[catch] at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:192)
	at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:135)
	at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:103)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
	at sun.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:357)
	at org.apache.tools.ant.Target.performTasks(Target.java:385)
	at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)


This is a fairly big showstopper as it kills live deploy on Glassfish V3 (as well as possibly many other scenarios) on 
WIndows.
Comment 1 Peter Pis 2009-08-26 09:52:13 UTC
Reassigning to j2ee for evaluation.
Comment 2 Petr Jiricka 2009-08-27 16:32:14 UTC
This belongs to the j2eeserver area. Cc'ing also Jirka Skrivanek - Jirko, isn't it weird that when file deletion fails,
fileobject is still invalidated?

It would be interesting to know why the deletion fails in the first place.
Comment 3 Petr Hejl 2009-09-01 11:35:16 UTC
I talked to Jirka - seems to be improper behaviour of FO.delete().
Comment 4 Jiri Skrivanek 2009-09-02 12:35:01 UTC
Fixed.
core-main #9a9e7375a5b8
Comment 5 Quality Engineering 2009-09-03 18:10:58 UTC
Integrated into 'main-golden', will be available in build *200909030951* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main-golden/rev/9a9e7375a5b8
User: Jiri Skrivanek <jskrivanek@netbeans.org>
Log: #170593 - Invalidate FileObject only if it is really deleted (not in finally clause).
Comment 6 jsight 2009-09-04 05:12:28 UTC
Now every other hot-deploy fails to glassfish v3 b61.

But there is good news:  That appears to be a completely different problem (not debugged enough for a bugreport). :)  The 
problem reported in this bugreport appears to be fixed.