Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [platform-core-dev] [Fwd: [platform-team-dev] Re: [Subclipse-dev] [Fwd: Re: some errors occur from time to time when build STP using Buckminster]]


It's the responsibility of org.eclipse.team.core to clean up any of its threads/jobs from its shutdown or stop method. However, if you're not getting an IllegalStateException when calling ResourcesPlugin.getWorkspace, it suggests to me that the resources plugin hasn't been stopped yet. On the other hand, the synchronizer field is only set to null during shutdown. It seems either this is a race condition and you are catching the resources plugin in the middle of its shutdown, or some exception occurred during shutdown that prevented the ResourcesPlugin.workspace field from being nulled. Are there any other exceptions in the log when this happens?




Thomas Hallgren <thomas@xxxxxxx>
Sent by: platform-core-dev-bounces@xxxxxxxxxxx

01/15/2008 10:33 AM

Please respond to
"Eclipse Platform Core component developers list."        <platform-core-dev@xxxxxxxxxxx>

To
"Eclipse Platform Core component developers list." <platform-core-dev@xxxxxxxxxxx>
cc
Subject
Re: [platform-core-dev] [Fwd: [platform-team-dev] Re: [Subclipse-dev]        [Fwd: Re: some        errors occur from time to time when build STP using        Buckminster]]





Hi Tom,
This cannot be related to the workbench unless you are talking about
some headless workbench code that I'm unaware of. It's not just the
execution that is headless. The installation is pure headless too. No UI
plugins are included.

The events stem from
org.eclipse.team.internal.core.BackgroundEventHandler and it seems like
it continues to send events even though the workspace has been closed.
The NPE is on this line:

return
ResourcesPlugin.getWorkspace().getSynchronizer().getSyncInfo(StatusCacheManager.SVN_BC_SYNC_KEY,
resource);

which suggests that ether ResourcePlugin.getWorkspace() returns null or
the subsequent call to getSynchronizer() returns null. What I'm trying
to figure out is:

a) Are we doing something wrong when we shut down? Buckminster headless
is an IApplication. The last thing it does is to issue a
ResourcesPlugin.getWorkspace().save(true, monitor).

b) If we are not doing anything wrong. Is it wrong for the Subclipse
plugin to assume that the
ResourcesPlugin.getWorkspace().getSynchronizer() is OK to use when
getDiff() is called?

c) Regardless of a) and b) what can be done to prevent this from
happening short term?

Regards,
Thomas Hallgren

Thomas Watson wrote:
>
> Down in the thread there is this statement
>
> >>>> Alex gets a NPE just before a headless Eclipse invocation is
> shutting down (see email below). This
> >>>> happens on a Linux machine. Any ideas?
>
> If the application is headless is it possible the workbench was never
> started in the first place? During Framework shutdown the lazy
> activated bundles are stopped by reverse dependency order (hint: a
> vast majority of bundles in eclipse are lazy activated including the
> UI workbench bundles). If the bundle has a dependency on the workbench
> bundle then it should be shutdown before the workbench. But if the
> workbench was never started in the first place then the workbench may
> not even be active when your bundle is shutdown.
>
> Tom
>
>
>
> Inactive hide details for Thomas Hallgren ---01/15/2008 03:22:23
> AM---Hi,Thomas Hallgren ---01/15/2008 03:22:23 AM---Hi,
>
>
> From:                  
> Thomas Hallgren <thomas@xxxxxxx>
>
> To:                  
> "Eclipse Platform Core component developers list."
> <platform-core-dev@xxxxxxxxxxx>
>
> Date:                  
> 01/15/2008 03:22 AM
>
> Subject:                  
> [platform-core-dev] [Fwd: [platform-team-dev] Re: [Subclipse-dev]
> [Fwd: Re: some errors occur from time to time when build STP using
> Buckminster]]
>
> ------------------------------------------------------------------------
>
>
>
> Hi,
> I emailed this to the platform-team-dev list but I didn't get any reply
> and I haven't seen much traffic on that list. So I'll try here instead.
> Any help is greatly appreciated.
>
> Regards,
> Thomas Hallgren
>
>
> -------- Original Message --------
> Subject: [platform-team-dev] Re: [Subclipse-dev] [Fwd: Re: some errors
> occur from time to time when build STP using Buckminster]
> Date: Thu, 10 Jan 2008 15:32:27 +0100
> From: Thomas Hallgren <thomas@xxxxxxx>
> Reply-To: Generic team support framework <platform-team-dev@xxxxxxxxxxx>
> To: dev@xxxxxxxxxxxxxxxxxxxx, platform-team-dev@xxxxxxxxxxx
> References: <4785CA55.9060105@xxxxxxx>
> <ff892c5d0801100611p1fe612dfj817e76efd2951af@xxxxxxxxxxxxxx>
> <478629BC.5020203@xxxxxxx>
> <ff892c5d0801100624g309445e0r40fa7ff838401973@xxxxxxxxxxxxxx>
>
>
>
> Perhaps that would work. But calling start/stop is the responsibility of
> the OSGi framework. There must be some other mechanism that controls
> this (I don't seem to recall ever getting this error from the IDE). I'll
> CC the platform-team-dev@xxxxxxxxxxx mailing list and see if anyone
> there can shed some light on this.
>
> - thomas
>
>
> Mark Phippard wrote:
> > Not sure.  Is it possible to call the stop() method on the plugin and
> > have it just shut it stuff down?
> >
> > Mark
> >
> >
> > On Jan 10, 2008 9:20 AM, Thomas Hallgren <thomas@xxxxxxx> wrote:
> >  
> >> Do you know if there's something that we can do to prevent this from
> >> happening? Is there some way to shut down the
> SubscriberChangeSetManager
> >> before the workspace plugin is stopped?
> >>
> >> - thomas
> >>
> >>
> >> Mark Phippard wrote:
> >>    
> >>> This is the method:
> >>>
> >>>               protected byte[]
> internalGetCachedSyncBytes(IResource resource)
> >>> throws SVNException {
> >>>                       try {
> >>>                               return
> ResourcesPlugin.getWorkspace().getSynchronizer().getSyncInfo(StatusCacheManager.SVN_BC_SYNC_KEY,
> >>> resource);
> >>>                       } catch (CoreException e) {
> >>>                               throw SVNException.wrapException(e);
> >>>                       }
> >>>               }
> >>>
> >>>
> >>> My guess would be that getWorkspace() is returning null because the
> >>> workspace is shutting down.
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Jan 10, 2008 2:33 AM, Thomas Hallgren <thomas@xxxxxxx> wrote:
> >>>
> >>>      
> >>>> Hi,
> >>>> Alex gets a NPE just before a headless Eclipse invocation is
> shutting down (see email below). This
> >>>> happens on a Linux machine. Any ideas?
> >>>>
> >>>> Regards,
> >>>> Thomas Hallgren
> >>>>
> >>>>
> >>>> -------- Original Message --------
> >>>> Subject: Re: some errors occur from time to time when build STP
> using Buckminster
> >>>> Date: Thu, 10 Jan 2008 11:18:10 +0800
> >>>> From: Alex Chen <alex.chen@xxxxxxxx>
> >>>> Organization: EclipseCorner
> >>>> To: Thomas Hallgren <thomas@xxxxxxx>
> >>>> Newsgroups: eclipse.technology.buckminster
> >>>> References: <flkuh4$7k8$1@xxxxxxxxxxxxxxxxx>
> <477E43C0.9010902@xxxxxxx> <4781E074.8040409@xxxxxxxx>
> >>>> <4782F178.9010606@xxxxxxxx> <4783E91D.30502@xxxxxxx>
> <47848270.80306@xxxxxxxx>
> >>>> <47849CB9.9060304@xxxxxxx> <4784F016.7070403@xxxxxxx>
> >>>>
> >>>> Hi Thomas,
> >>>>
> >>>> During build STP use Buckminster 0.3.0, I got exception
> intermittent below:
> >>>>
> >>>>      [java] INFO:  Query complete.
> >>>>       [java] ERROR: An internal error occurred during: "Updating
> Change
> >>>> Sets for SVNStatusSubscriber".
> >>>>       [java] java.lang.NullPointerException
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.status.SynchronizerSyncInfoCache$SyncInfoSynchronizedAccessor.internalGetCachedSyncBytes(SynchronizerSyncInfoCache.java:215)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.status.SynchronizerSyncInfoCache.getCachedSyncBytes(SynchronizerSyncInfoCache.java:107)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.status.SynchronizerSyncInfoCache.hasCachedStatus(SynchronizerSyncInfoCache.java:44)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.status.StatusCacheManager.hasCachedStatus(StatusCacheManager.java:80)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isParentInSvnIgnore(LocalResource.java:153)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:112)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:137)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:137)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:137)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:137)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:137)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.resources.LocalResource.isIgnored(LocalResource.java:137)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.sync.SVNWorkspaceSubscriber.isSupervised(SVNWorkspaceSubscriber.java:122)
> >>>>       [java]     at
> >>>>
> org.tigris.subversion.subclipse.core.sync.SVNWorkspaceSubscriber.getSyncInfo(SVNWorkspaceSubscriber.java:171)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.core.subscribers.Subscriber.getDiff(Subscriber.java:370)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager.getDiff(SubscriberChangeSetManager.java:302)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:183)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.handleChange(SubscriberChangeSetManager.java:206)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.subscribers.SubscriberChangeSetManager$EventHandler.doDispatchEvents(SubscriberChangeSetManager.java:80)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.BackgroundEventHandler.dispatchEvents(BackgroundEventHandler.java:394)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.BackgroundEventHandler.processEvents(BackgroundEventHandler.java:374)
> >>>>       [java]     at
> >>>>
> org.eclipse.team.internal.core.BackgroundEventHandler$1.run(BackgroundEventHandler.java:203)
> >>>>       [java]     at
> >>>> org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> >>>>
> >>>>
> >>>> Thanks,
> >>>> --Alex
> >>>>
>
> _______________________________________________
> platform-core-dev mailing list
> platform-core-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/platform-core-dev
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> platform-core-dev mailing list
> platform-core-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/platform-core-dev
>  

_______________________________________________
platform-core-dev mailing list
platform-core-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/platform-core-dev


Back to the top