Thomas Watson | 9 Feb 00:07
Picon
Favicon

Equinox tagged for the next Helios Integration build.

The map file has been updated for the following Bug changes:
+ Bug 178927. [launcher] [plan] way to pass arguments from launcher to a running application instance (ASSIGNED)
+ Bug 276763. [launcher] launcher fails to use OpenJDK-based VM when -vm is specified (FIXED)
+ Bug 292273. [launcher] new launcher needed for linux gtk ppc 64 (FIXED)
+ Bug 295957. Exception handling for org.eclipse.core.runtime.preferences initializers (FIXED)
+ Bug 298416. BundleContext.installBundle is not atomic (ASSIGNED)
+ Bug 300775. FileNotFoundException on each shutdown (FIXED)
+ Bug 300911. Disabling tracing does not notify listeners (FIXED)
+ Bug 300912. Launcher fails on Solaris Sparc and Solaris x86 (CLOSED)
+ Bug 301033. [launcher] --launcher.openFile does not work with "Open With..." on Windows (FIXED)
+ Bug 301257. MemoryEventConstants is misspelled (ASSIGNED)
+ Bug 301262. [publisher] NPE running headless app on non-main thread (FIXED)
+ Bug 301502. Tracing: no version number in files that were rotated (FIXED)
+ Bug 301735. Tracing: pipes in messages result in corrupt trace file (FIXED)
+ Bug 301783. Tracing: session and file header timestamps seem to be out-of-sync sometimes (FIXED)
+ Bug 301974. Race with unregister and ungetService can cause NullPointerException (FIXED)
+ Bug 302011. Should provide causing exception where possible (FIXED)
+ Bug 302097. org.eclipse.equinox.executable does not respect user CC, CFLAGS and LDFLAGS (NEW)

The following projects have changed:
org.eclipse.equinox.launcher.releng
org.eclipse.equinox.launcher.win32.win32.ia64
org.eclipse.equinox.launcher.carbon.macosx
org.eclipse.equinox.app
org.eclipse.osgi.tests
org.eclipse.equinox.launcher.gtk.linux.ppc64
org.eclipse.osgi
org.eclipse.equinox.launcher.cocoa.macosx.x86_64
org.eclipse.equinox.ds
org.eclipse.equinox.launcher.motif.hpux.ia64_32
org.eclipse.equinox.launcher
org.eclipse.equinox.launcher.cocoa.macosx
org.eclipse.equinox.launcher.gtk.solaris.sparc
org.eclipse.equinox.launcher.gtk.solaris.x86
org.eclipse.equinox.launcher.motif.aix.ppc
org.eclipse.equinox.launcher.win32.win32.x86_64
org.eclipse.equinox.launcher.gtk.linux.ppc
org.eclipse.equinox.launcher.motif.solaris.sparc
org.eclipse.equinox.launcher.motif.linux.x86
org.eclipse.equinox.launcher.gtk.linux.x86_64
org.eclipse.equinox.launcher.wpf.win32.x86
org.eclipse.equinox.executable
org.eclipse.equinox.launcher.win32.win32.x86
org.eclipse.equinox.preferences
org.eclipse.equinox.supplement
org.eclipse.equinox.common
org.eclipse.equinox.launcher.gtk.linux.x86

Tom

Thomas Watson | 5 Feb 22:49
Picon
Favicon

Clients of (misspelled) MemoryEventContants

Users of org.eclipse.equinox.events.MemoryEventContants please read on; otherwise you can ignore this message.

In bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=284061 we added a new constants class org.eclipse.equinox.events.MemoryEventContants. Notice the misspelling of "Constants". Next week's Eclipse project integration build will have a correctly spelled constants class org.eclipse.equinox.events.MemoryEventConstants. Please change your code to start using the correctly spelled constants class. I plan to delete the misspelled constants class after next weeks integration build to allow folks to change to the correct one.

Sorry for the inconvenience and let me know if you have any issues with this. Thanks.

Tom

Thomas Watson | 2 Feb 00:19
Picon
Favicon

Equinox tagged for next Helios Integration build

The map file has been updated for the following Bug changes:
+ Bug 279215. Equinox Aspects does not work with Servlet Bridge (FIXED)
+ Bug 299657. Ranking property for Servlet Filter (FIXED)
+ Bug 299921. DefaultClassLoader.getResources() can erroneously return null (FIXED)
+ Bug 299922. Equinox should not use new ClassLoader(null) (FIXED)
+ Bug 301319. Compiler warnings in I20100129-1300 (FIXED)
+ Bug 301440. Race condition between refreshPackages and ServiceTracker.open() (FIXED)

The following projects have changed:
org.eclipse.equinox.http.servlet
org.eclipse.equinox.supplement
org.eclipse.equinox.servletbridge
org.eclipse.osgi.tests
org.eclipse.osgi

Tom

魏昕路 | 1 Feb 12:50
Picon

SecureStorage: Can not get the password after system user password has been changed

Hello,
 
I'm using secure storage to store my password. I changed my system password by the prompt that I'm getting from the windows logon screen as a reminder that my password expired. After that, the password can not be read and it can not be stored again. It only occurs on some of my Winodws machines.
 
I'm thinking about solve the problem by removing the secore_storage file in C:\Documents and Settings\Administrator\.eclipse\org.eclipse.equinox.security when get exception when reading the password. However, there's only one internal method "InternalExchangeUtils.defaultStorageDelete()". I'm not supposed to use that internal method although it did solve the problem.
 
I also tried to use my own secure_storage file. The code I used to open and delete my secure preference is:
 
root = SecurePreferencesFactory.open(storeUrl, null);
passwordNode = ibgRoot.node(PASSWORD_NODE);
 
public static void clearStore() {
{
    ....
    passwordNode.clear();
    passwordNode = null;
    ....
    File file = new File(storeUrl.getPath());
    file.delete();
}
 
But still I can't store the password. There'll be a StorageException when:
 
passwordNode.put(PASSWORD_KEY, password, true); 
 
I think something should have been missed in clearStore(). (maybe close() ?)
Is there any one in the list can help me?  Thank you!
魏昕路 | 1 Feb 13:17
Picon

Re: SecureStorage: Can not get the password after system user password has been changed

Make the question simpler:

How to delete the secure storage when the system user password has been changed?
 
2010/2/1 魏昕路 <appleren214-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Hello,
 
I'm using secure storage to store my password. I changed my system password by the prompt that I'm getting from the windows logon screen as a reminder that my password expired. After that, the password can not be read and it can not be stored again. It only occurs on some of my Winodws machines.
 
I'm thinking about solve the problem by removing the secore_storage file in C:\Documents and Settings\Administrator\.eclipse\org.eclipse.equinox.security when get exception when reading the password. However, there's only one internal method "InternalExchangeUtils.defaultStorageDelete()". I'm not supposed to use that internal method although it did solve the problem.
 
I also tried to use my own secure_storage file. The code I used to open and delete my secure preference is:
 
root = SecurePreferencesFactory.open(storeUrl, null);
passwordNode = ibgRoot.node(PASSWORD_NODE);
 
public static void clearStore() {
{
    ....
    passwordNode.clear();
    passwordNode = null;
    ....
    File file = new File(storeUrl.getPath());
    file.delete();
}
 
But still I can't store the password. There'll be a StorageException when:
 
passwordNode.put(PASSWORD_KEY, password, true); 
 
I think something should have been missed in clearStore(). (maybe close() ?)
Is there any one in the list can help me?  Thank you!



--
魏昕路
email: appleren214-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
MSN: xinlu_wei-KN7UnAbNpbg@public.gmane.org
Oleg Besedin | 1 Feb 16:07
Picon

Re: Re: SecureStorage: Can not get the password after system user password has been changed


Window -> Preferences -> General -> Security -> Secure Storage, switch to the "Contents" tab; press "Delete".

That said, regular changing of the Windows password should not invalidate the secure storage. There are some situations described here:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=274128

that can cause that to happen; most notably it happens when administrator resets user's password.

Sincerely,
Oleg Besedin


From: 魏昕路 <appleren214 <at> gmail.com>
To: equinox-dev <at> eclipse.org
Date: 02/01/2010 07:19 AM
Subject: [equinox-dev] Re: SecureStorage: Can not get the password after        system user password has been changed
Sent by: equinox-dev-bounces <at> eclipse.org




Make the question simpler:

How to delete the secure storage when the system user password has been changed?
 
2010/2/1 魏昕路 <appleren214 <at> gmail.com>
Hello,
 
I'm using secure storage to store my password. I changed my system password by the prompt that I'm getting from the windows logon screen as a reminder that my password expired. After that, the password can not be read and it can not be stored again. It only occurs on some of my Winodws machines.
 
I'm thinking about solve the problem by removing the secore_storage file in C:\Documents and Settings\Administrator\.eclipse\org.eclipse.equinox.security when get exception when reading the password. However, there's only one internal method "InternalExchangeUtils.defaultStorageDelete()". I'm not supposed to use that internal method although it did solve the problem.
 
I also tried to use my own secure_storage file. The code I used to open and delete my secure preference is:
 
root = SecurePreferencesFactory.open(storeUrl, null);
passwordNode = ibgRoot.node(PASSWORD_NODE);
 
public static void clearStore() {
{
    ....
    passwordNode.clear();
    passwordNode = null;
    ....
    File file = new File(storeUrl.getPath());
   file.delete();
}
 
But still I can't store the password. There'll be a StorageException when:
 
passwordNode.put(PASSWORD_KEY, password, true);
 
I think something should have been missed in clearStore(). (maybe close() ?)
Is there any one in the list can help me?  Thank you!



--
魏昕路
email: appleren214 <at> gmail.com
MSN: xinlu_wei <at> 126.com_______________________________________________
equinox-dev mailing list
equinox-dev <at> eclipse.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev


魏昕路 | 1 Feb 20:15
Picon

Re: SecureStorage: Can not get the password after system user password has been changed

Thanks! Is it possilbe to delete it by programming? I tried InternalExchangeUtils.defaultStorageDelete():
 
try {
passwordNode.get(PASSWORD_KEY, null);
   } catch (...) {
   InternalExchangeUtils.defaultStorageDelete();
  }
 
The secure_storage will be deleted. New file will be generated when save the password again. That's what I want to do.
Can I do the same thing with the external methods? I haven't found a method to use...
cpintsch | 30 Jan 14:50
Picon
Favicon

No mails

Please take me away of your mailing list!

cpintsch@...

Tim Diekmann | 30 Jan 04:44

problem with ServiceTracker.open() and refreshThread in Equinox

I ran into a problem with Equinox 3.5.1.R35x_v20090806:

In my log file I find the following exception stack trace after calling PackageAdmin.refreshPackages(null).

org.osgi.framework.BundleException: Exception in com.tibco.xxx.Activator.start() of bundle com.tibco.xxx.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:805)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:754)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
at com.tibco.xxx.refreshRuntime(xxx.java:872)
at com.tibco.xx.access$6(xxxImpl.java:569)
at com.tibco.xxx$2.run(xxxImpl.java:229)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalStateException: The service has been unregistered
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.lookupServiceRegistrations(ServiceRegistry.java:867)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getServiceReferences(ServiceRegistry.java:290)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getAllServiceReferences(BundleContextImpl.java:577)
at org.osgi.util.tracker.ServiceTracker.getInitialReferences(ServiceTracker.java:360)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:321)
at com.tibco.xxx.start(xxx.java:150)
at com.tibco.xxx.Activator.start(Activator.java:39)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:782)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:773)

The exception is thrown while starting a bundle after the refreshPackages call. I assume the refreshThread is still ongoing in the background and as part of the process stops and restarts bundles, which causes OSGi services to be unregistered and then (hopefully) registered again.

The ServiceTracker of the bundle that is started wants to look for all services that have a certain property set. However, during the initial scan of all services, one of them is unregistered, which causes the seen exception.

There seems to be a race condition in which lookupServiceRegistrations() acquires the lock to ServiceRegistry and copies the results to an ArrayList.

private List lookupServiceRegistrations(String clazz, Filter filter) {
List result;
synchronized (this) {
if (clazz == null) { /* all services */
result = allPublishedServices;
} else {
/* services registered under the class name */
result = (List) publishedServicesByClass.get(clazz);
}

if ((result == null) || (result.size() == 0)) {
return Collections.EMPTY_LIST;
}

result = new ArrayList(result); /* make a new list since we don't want to change the real list */
}

In the meantime the service is unregistered and removed from allPublishedServices:

void removeServiceRegistration(BundleContextImpl context, ServiceRegistrationImpl serviceReg) {
// Remove the ServiceRegistrationImpl from the list of Services published by BundleContextImpl.
List contextServices = (List) publishedServicesByContext.get(context);
if (contextServices != null) {
contextServices.remove(serviceReg);
}

// Remove the ServiceRegistrationImpl from the list of Services published by Class Name.
String[] clazzes = serviceReg.getClasses();
for (int i = 0, size = clazzes.length; i < size; i++) {
String clazz = clazzes[i];
List services = (List) publishedServicesByClass.get(clazz);
services.remove(serviceReg);
}

// Remove the ServiceRegistrationImpl from the list of all published Services.
allPublishedServices.remove(serviceReg);
}

However, lookupServiceRegistrations() goes on to iterate over the result list and runs into the exception above.

for (Iterator iter = result.iterator(); iter.hasNext();) {
ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
if (!filter.match(registration.getReferenceImpl())) {
iter.remove();
}
}


Has anyone seen this? Is this a know problem? I guess I could file a bug for this.

Thanks,

   Tim.

"It is a simple task to make things complex, but a complex task to make them simple."
 -- Fortune Cookie

BJ Hargrave | 30 Jan 05:41
Picon
Favicon

Re: problem with ServiceTracker.open() and refreshThread in Equinox

Yes, open a bug Tim. I can see that a fix is needed here.
--

BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
hargrave-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org

office: +1 386 848 1781
mobile: +1 386 848 3788




From: Tim Diekmann <tdiekman-KihTROQIYegAvxtiuMwx3w@public.gmane.org>
To: Equinox development mailing list <equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org>
Date: 2010/01/29 22:46
Subject: [equinox-dev] problem with ServiceTracker.open() and refreshThread        in Equinox
Sent by: equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org




I ran into a problem with Equinox 3.5.1.R35x_v20090806:

In my log file I find the following exception stack trace after calling PackageAdmin.refreshPackages(null).

org.osgi.framework.BundleException: Exception in com.tibco.xxx.Activator.start() of bundle com.tibco.xxx.
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:805)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:754)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
at com.tibco.xxx.refreshRuntime(xxx.java:872)
at com.tibco.xx.access$6(xxxImpl.java:569)
at com.tibco.xxx$2.run(xxxImpl.java:229)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalStateException: The service has been unregistered
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.getReferenceImpl(ServiceRegistrationImpl.java:277)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.lookupServiceRegistrations(ServiceRegistry.java:867)
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.getServiceReferences(ServiceRegistry.java:290)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.getAllServiceReferences(BundleContextImpl.java:577)
at org.osgi.util.tracker.ServiceTracker.getInitialReferences(ServiceTracker.java:360)
at org.osgi.util.tracker.ServiceTracker.open(ServiceTracker.java:321)
at com.tibco.xxx.start(xxx.java:150)
at com.tibco.xxx.Activator.start(Activator.java:39)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:782)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:773)

The exception is thrown while starting a bundle after the refreshPackages call. I assume the refreshThread is still ongoing in the background and as part of the process stops and restarts bundles, which causes OSGi services to be unregistered and then (hopefully) registered again.

The ServiceTracker of the bundle that is started wants to look for all services that have a certain property set. However, during the initial scan of all services, one of them is unregistered, which causes the seen exception.

There seems to be a race condition in which lookupServiceRegistrations() acquires the lock to ServiceRegistry and copies the results to an ArrayList.

private List lookupServiceRegistrations(String clazz, Filter filter) {
List result;
synchronized (this) {
if (clazz == null) { /* all services */
result = allPublishedServices;
} else {
/* services registered under the class name */
result = (List) publishedServicesByClass.get(clazz);
}

if ((result == null) || (result.size() == 0)) {
return Collections.EMPTY_LIST;
}

result = new ArrayList(result); /* make a new list since we don't want to change the real list */
}

In the meantime the service is unregistered and removed from allPublishedServices:

void removeServiceRegistration(BundleContextImpl context, ServiceRegistrationImpl serviceReg) {
// Remove the ServiceRegistrationImpl from the list of Services published by BundleContextImpl.
List contextServices = (List) publishedServicesByContext.get(context);
if (contextServices != null) {
contextServices.remove(serviceReg);
}

// Remove the ServiceRegistrationImpl from the list of Services published by Class Name.
String[] clazzes = serviceReg.getClasses();
for (int i = 0, size = clazzes.length; i < size; i++) {
String clazz = clazzes[i];
List services = (List) publishedServicesByClass.get(clazz);
services.remove(serviceReg);
}

// Remove the ServiceRegistrationImpl from the list of all published Services.
allPublishedServices.remove(serviceReg);
}

However, lookupServiceRegistrations() goes on to iterate over the result list and runs into the exception above.

for (Iterator iter = result.iterator(); iter.hasNext();) {
ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
if (!filter.match(registration.getReferenceImpl())) {
iter.remove();
}
}


Has anyone seen this? Is this a know problem? I guess I could file a bug for this.

Thanks,

  Tim.

"It is a simple task to make things complex, but a complex task to make them simple."
 -- Fortune Cookie
_______________________________________________
equinox-dev mailing list
equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Roy Benjamin | 29 Jan 22:14
Picon

Equinox on the server

Hi,

Just wondering how many have used Equinox on the server side.  I do not
simply mean using the servlet bridge.  

I've had good results essentially appending the Equinox runtime to JBoss and Tomcat,
servlets can lookup and use OSGi services etc...  I've front-ended SOA calls with OSGi
registered services, handling SOA versioning in this way, also the services can return
local implementations for dev and testing.

Thanks

Roy

Gmane