[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [p2-dev] java.lang.RuntimeException: Attempt to access stopped agent: org.eclipse.equinox.internal.p2.core.ProvisioningAgent@65fa65fa


I've entered https://bugs.eclipse.org/bugs/show_bug.cgi?id=307151.


From: John Arthorne <arthorne.eclipse@xxxxxxxxx>
To: P2 developer discussions <p2-dev@xxxxxxxxxxx>
Date: 03/18/2010 02:24 PM
Subject: Re: [p2-dev] java.lang.RuntimeException: Attempt to access stopped         agent: org.eclipse.equinox.internal.p2.core.ProvisioningAgent@65fa65fa
Sent by: p2-dev-bounces@xxxxxxxxxxx





Can you enter a bug for this? What's supposed to happen is that when the agent is stopped, it tells all registered services to stop. In the method SimpleProfileRegistry#stop it joins any existing preference save job. This should ensure there is no preference save job running after the agent has been stopped. Maybe in your case you never access the IProfileRegistry service so that service is never created in the agent? Or, there could be a timing problem I'm missing. In any case, please enter a bug and CC me and I can take a look.

John



On Thu, Mar 18, 2010 at 12:31 PM, Thomas M Houser <tmhouser@xxxxxxxxxx> wrote:

I am using the IProvisioningAgentProvider.createAgent() and IProvisioningAgent.stop() APIs and I'm getting this exception:


java.lang.RuntimeException: Attempt to access stopped agent: org.eclipse.equinox.internal.p2.core.ProvisioningAgent@65fa65fa

        at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.checkRunning(ProvisioningAgent.java:79)

        at org.eclipse.equinox.internal.p2.core.ProvisioningAgent.getService(ProvisioningAgent.java:45)

        at org.eclipse.equinox.internal.p2.engine.ProfilePreferences.doSave(ProfilePreferences.java:112)

        at org.eclipse.equinox.internal.p2.engine.ProfilePreferences$SaveJob.run(ProfilePreferences.java:49)

        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)


The ProfilePreferences.save() method schedules a job with the IProvisioningAgent instance that I created and am stopping:


Thread [main] (Suspended (breakpoint at line 40 in ProfilePreferences$SaveJob))        

        ProfilePreferences$SaveJob.<init>(ProfilePreferences, IProvisioningAgent) line: 40        

        ProfilePreferences.save() line: 275        

        ProfilePreferences(EclipsePreferences).flush() line: 352        

        ProfilePreferences(EclipsePreferences).flush() line: 340        

        MetadataRepositoryManager(AbstractRepositoryManager<T>).saveToPreferences() line: 979        

        MetadataRepositoryManager(AbstractRepositoryManager<T>).remember(RepositoryInfo<T>, boolean) line: 839        

        MetadataRepositoryManager(AbstractRepositoryManager<T>).addRepository(URI, boolean, boolean) line: 167        

        MetadataRepositoryManager(AbstractRepositoryManager<T>).loadRepository(URI, IProgressMonitor, String, int) line: 639        

        MetadataRepositoryManager(AbstractRepositoryManager<T>).doCreateRepository(URI, String, String, Map<String,String>) line: 271        

        MetadataRepositoryManager.createRepository(URI, String, String, Map<String,String>) line: 41        


How can I safely stop an IProvisioningAgent  instance when there is a scheduled job that will access it?  Is this a bug?

_______________________________________________
p2-dev mailing list

p2-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/p2-dev

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