Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [dsdp-tm-dev] Question about RSE startup

Greg - looking at the code, I cannot see how the type
of a FilterPool would be null unless the stuff you
persisted is somehow broken.

Did you see any crashes of Eclipse recently that could 
have led to incompletely stored persisted data? Any
interesting errors logged?

At any rate, if you could write up a bug on bugzilla,
this would be helpful.

Thanks,
--
Martin Oberhuber
Wind River Systems, Inc.
Target Management Project Lead, DSDP PMC Member
http://www.eclipse.org/dsdp/tm 

> -----Original Message-----
> From: dsdp-tm-dev-bounces@xxxxxxxxxxx 
> [mailto:dsdp-tm-dev-bounces@xxxxxxxxxxx] On Behalf Of Greg Watson
> Sent: Thursday, June 28, 2007 1:48 AM
> To: Target Management developer discussions
> Subject: Re: [dsdp-tm-dev] Question about RSE startup
> 
> I spoke a bit too soon. I'm seeing the following errors  
> intermittently on startup:
> 
> Greg
> 
> java.lang.NullPointerException
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restor
> eFilterPoo 
> l(RSEDOMImporter.java:376)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restor
> eProfile 
> (RSEDOMImporter.java:90)
> 	at 
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.load 
> (RSEPersistenceManager.java:390)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.loa
> dProfiles( 
> RSEPersistenceManager.java:370)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.res
> toreProfil 
> es(RSEPersistenceManager.java:231)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.res
> toreProfil 
> es(RSEPersistenceManager.java:217)
> 	at  
> org.eclipse.rse.internal.core.model.SystemProfileManager.getDefault 
> (SystemProfileManager.java:55)
> 	at 
> org.eclipse.rse.core.model.SystemStartHere.getSystemProfileManager 
> (SystemStartHere.java:180)
> 	at 
> org.eclipse.rse.ui.RSEUIPlugin$InitRSEJob.run(RSEUIPlugin.java:95)
> 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> java.lang.NullPointerException
> 	at  
> org.eclipse.rse.internal.persistence.PropertyFileProvider.getSaveJob 
> (PropertyFileProvider.java:151)
> 	at 
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.save 
> (RSEPersistenceManager.java:420)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.com
> mitProfile 
> (RSEPersistenceManager.java:137)
> 	at org.eclipse.rse.internal.core.model.SystemProfile.commit 
> (SystemProfile.java:216)
> 	at org.eclipse.rse.internal.core.model.SystemHostPool.commit 
> (SystemHostPool.java:612)
> 	at org.eclipse.rse.internal.core.model.SystemHostPool.commit 
> (SystemHostPool.java:621)
> 	at 
> org.eclipse.rse.internal.core.model.SystemHostPool.updateHost 
> (SystemHostPool.java:254)
> 	at 
> org.eclipse.rse.internal.core.model.SystemHostPool.createHost 
> (SystemHostPool.java:208)
> 	at org.eclipse.rse.ui.internal.model.SystemRegistry.createHost 
> (SystemRegistry.java:1652)
> 	at org.eclipse.rse.ui.internal.model.SystemRegistry.createHost 
> (SystemRegistry.java:1601)
> 	at org.eclipse.rse.ui.internal.model.SystemRegistry.createHost 
> (SystemRegistry.java:1922)
> 	at org.eclipse.rse.ui.internal.model.SystemRegistry.createHost 
> (SystemRegistry.java:1893)
> 	at org.eclipse.rse.internal.core.model.SystemProfile.createHost 
> (SystemProfile.java:89)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restoreHost 
> (RSEDOMImporter.java:125)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restor
> eProfile 
> (RSEDOMImporter.java:88)
> 	at 
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.load 
> (RSEPersistenceManager.java:390)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.loa
> dProfiles( 
> RSEPersistenceManager.java:370)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.res
> toreProfil 
> es(RSEPersistenceManager.java:231)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.res
> toreProfil 
> es(RSEPersistenceManager.java:217)
> 	at  
> org.eclipse.rse.internal.core.model.SystemProfileManager.getDefault 
> (SystemProfileManager.java:55)
> 	at 
> org.eclipse.rse.core.model.SystemStartHere.getSystemProfileManager 
> (SystemStartHere.java:180)
> 	at 
> org.eclipse.rse.ui.RSEUIPlugin$InitRSEJob.run(RSEUIPlugin.java:95)
> 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> java.lang.NullPointerException
> 	at  
> org.eclipse.rse.ui.internal.model.SystemRegistry.getServiceSubSystems 
> (SystemRegistry.java:1104)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restor
> eSubSystem 
> (RSEDOMImporter.java:231)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restor
> eConnector 
> Service(RSEDOMImporter.java:169)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restoreHost 
> (RSEDOMImporter.java:138)
> 	at  
> org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restor
> eProfile 
> (RSEDOMImporter.java:88)
> 	at 
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.load 
> (RSEPersistenceManager.java:390)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.loa
> dProfiles( 
> RSEPersistenceManager.java:370)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.res
> toreProfil 
> es(RSEPersistenceManager.java:231)
> 	at  
> org.eclipse.rse.internal.persistence.RSEPersistenceManager.res
> toreProfil 
> es(RSEPersistenceManager.java:217)
> 	at  
> org.eclipse.rse.internal.core.model.SystemProfileManager.getDefault 
> (SystemProfileManager.java:55)
> 	at 
> org.eclipse.rse.core.model.SystemStartHere.getSystemProfileManager 
> (SystemStartHere.java:180)
> 	at 
> org.eclipse.rse.ui.RSEUIPlugin$InitRSEJob.run(RSEUIPlugin.java:95)
> 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> 
> 
> On Jun 27, 2007, at 10:44 AM, David Dykstal wrote:
> 
> > Martin --
> >
> > It looks like you are correct.
> >
> > Greg --
> >
> > You can try yanking the serializing provider from the 
> plugin.xml of  
> > the
> > rse.core plugin and see if this fixes your problem. Its there for  
> > testing
> > purposes which is why it isn't autostart. You won't miss it.
> > _______________________
> > David Dykstal
> > david_dykstal@xxxxxxxxxx
> >
> >
> >
> >              "Oberhuber,
> >              Martin"
> >               
> > <Martin.Oberhuber                                          To
> >              @windriver.com>           David Dykstal/Rochester/ 
> > IBM@IBMUS
> >                                                             
>            
> >   cc
> >              06/27/2007 11:28          "Target Management developer
> >              AM                        discussions"
> >                                        <dsdp-tm-dev@xxxxxxxxxxx>
> >                                                                     
> > Subject
> >                                        RE: [dsdp-tm-dev] Question  
> > about
> >                                        RSE startup
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > Dave -
> >
> > I think that Greg is right and  
> > RSEPersistenceManager.isRestoreComplete()
> > is buggy. For me, it looks like in following code, as soon 
> as we have
> > a ProviderRecord that is not autostart, the method will 
> always return
> > false:
> >
> >              public boolean isRestoreComplete() {
> >                          boolean isComplete = true;
> >                          String[] ids = getPersistenceProviderIds();
> >                          for (int i = 0; i < ids.length &&  
> > isComplete; i++)
> > {
> >                                      String id = ids[i];
> >                                      ProviderRecord pr =  
> > getProviderRecord
> > (id);
> >                                      isComplete = 
> pr.isAutostart() &&
> > pr.isRestored();
> >                          }
> >                          return isComplete;
> >              }
> >
> > Correct code should be like this:
> >
> >                          for (int i = 0; i < ids.length &&  
> > isComplete; i++)
> > {
> >                                      String id = ids[i];
> >                                      ProviderRecord pr =  
> > getProviderRecord
> > (id);
> >                   if (pr.isAutostart()) isComplete = 
> pr.isRestored();
> >                          }
> >
> > Because the SerializingProvider is not autostart, this would
> > always return false. Can you confirm, and if yes create a 
> bug for this
> > and fix it for 2.0.1?
> >
> > Thanks,
> > --
> > Martin Oberhuber
> > Wind River Systems, Inc.
> > Target Management Project Lead, DSDP PMC Member
> > http://www.eclipse.org/dsdp/tm
> >
> >> -----Original Message-----
> >> From: dsdp-tm-dev-bounces@xxxxxxxxxxx
> >> [mailto:dsdp-tm-dev-bounces@xxxxxxxxxxx] On Behalf Of Greg Watson
> >> Sent: Wednesday, June 27, 2007 6:10 PM
> >> To: Target Management developer discussions
> >> Subject: Re: [dsdp-tm-dev] Question about RSE startup
> >>
> >> Martin,
> >>
> >> That's great. However it doesn't seem to work. Is there something
> >> else that needs to be done apart from the following?
> >>
> >>                        if (!RSEUIPlugin.isTheSystemRegistryActive 
> >> ()) {
> >>                                    return false;
> >>                        }
> >>
> >>                        sysReg = RSECorePlugin.getDefault
> > ().getSystemRegistry();
> >>                        if (sysReg == null) {
> >>                                    return false;
> >>                        }
> >>
> >>                        while
> >> (!RSECorePlugin.getThePersistenceManager().isRestoreComplete
> >> ()) {
> >>                                    System.out.println("waiting for
> > restore...");
> >>                                    try {
> >>                                                Thread.sleep(500);
> >>                                    } catch 
> (InterruptedException e) {
> >>                                    }
> >>                        }
> >>
> >> The call to isRestoreComplete() always returns false. This is being
> >> run in a different thread to the UI thread.
> >>
> >> Greg
> >>
> >> On Jun 27, 2007, at 9:41 AM, Oberhuber, Martin wrote:
> >>
> >>> Hi Greg,
> >>>
> >>> There was
> >>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=177332#c6
> >>> requesting exactly this.
> >>>
> >>> As I understand it, what you need to do is
> >>>
> >>> RSECorePlugin.getThePersistenceManager().isRestoreComplete()
> >>>
> >>> Cheers,
> >>> --
> >>> Martin Oberhuber
> >>> Wind River Systems, Inc.
> >>> Target Management Project Lead, DSDP PMC Member
> >>> http://www.eclipse.org/dsdp/tm>
> >>>
> >>>> -----Original Message-----
> >>>> From: dsdp-tm-dev-bounces@xxxxxxxxxxx
> >>>> [mailto:dsdp-tm-dev-bounces@xxxxxxxxxxx] On Behalf Of Greg Watson
> >>>> Sent: Wednesday, June 27, 2007 5:20 PM
> >>>> To: Target Management developer discussions
> >>>> Subject: [dsdp-tm-dev] Question about RSE startup
> >>>>
> >>>> Hi,
> >>>>
> >>>> I've been seeing strange behavior from RSE when I call from an
> >>>> external plugin, particularly during early initialization of
> >>>> Eclipse.
> >>>> Although the RSE UI and core plugins are loaded, they 
> don't seem to
> >>>> have been fully configured. So calling
> >>>> RSECorePlugin.getTheSystemRegistry().getHosts(), for example,
> >>>> sometimes returns nothing, sometimes one host, sometimes
> >>>> multiple hosts.
> >>>>
> >>>> I think the issue is caused by the use of InitRSEJob to 
> perform RSE
> >>>> initialization. I presume that this is to reduce the 
> plugin loading
> >>>> overhead on Eclipse, but the problem is that it may be some time
> >>>> before this job is actually run, so it is possible to attempt
> >>>> to call
> >>>> RSE methods before it is fully initialized.
> >>>>
> >>>> Do you have any way of checking that RSE is ready, 
> rather than just
> >>>> loaded? Alternatively, could isTheSystemRegistryActive() 
> be changed
> >>>> so that it reflects the initialized state of RSE?
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Greg
> >>>> _______________________________________________
> >>>> dsdp-tm-dev mailing list
> >>>> dsdp-tm-dev@xxxxxxxxxxx
> >>>> https://dev.eclipse.org/mailman/listinfo/dsdp-tm-dev
> >>>>
> >>> _______________________________________________
> >>> dsdp-tm-dev mailing list
> >>> dsdp-tm-dev@xxxxxxxxxxx
> >>> https://dev.eclipse.org/mailman/listinfo/dsdp-tm-dev
> >>>
> >>
> >> _______________________________________________
> >> dsdp-tm-dev mailing list
> >> dsdp-tm-dev@xxxxxxxxxxx
> >> https://dev.eclipse.org/mailman/listinfo/dsdp-tm-dev
> >>
> >
> >
> > _______________________________________________
> > dsdp-tm-dev mailing list
> > dsdp-tm-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/dsdp-tm-dev
> >
> 
> _______________________________________________
> dsdp-tm-dev mailing list
> dsdp-tm-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/dsdp-tm-dev
> 


Back to the top