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

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.restoreFilterPoo l(RSEDOMImporter.java:376) at org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restoreProfile (RSEDOMImporter.java:90) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.load (RSEPersistenceManager.java:390) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.loadProfiles( RSEPersistenceManager.java:370) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.restoreProfil es(RSEPersistenceManager.java:231) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.restoreProfil 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.commitProfile (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.restoreProfile (RSEDOMImporter.java:88) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.load (RSEPersistenceManager.java:390) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.loadProfiles( RSEPersistenceManager.java:370) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.restoreProfil es(RSEPersistenceManager.java:231) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.restoreProfil 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.restoreSubSystem (RSEDOMImporter.java:231) at org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restoreConnector Service(RSEDOMImporter.java:169) at org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restoreHost (RSEDOMImporter.java:138) at org.eclipse.rse.internal.persistence.dom.RSEDOMImporter.restoreProfile (RSEDOMImporter.java:88) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.load (RSEPersistenceManager.java:390) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.loadProfiles( RSEPersistenceManager.java:370) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.restoreProfil es(RSEPersistenceManager.java:231) at org.eclipse.rse.internal.persistence.RSEPersistenceManager.restoreProfil 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




Back to the top