Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 328996 - [Discovery][DNS-SD] Upon opening the Service Discovery view a ClassCastException gets thrown
Summary: [Discovery][DNS-SD] Upon opening the Service Discovery view a ClassCastExcept...
Status: RESOLVED FIXED
Alias: None
Product: ECF
Classification: RT
Component: ecf.providers (show other bugs)
Version: 3.4.0   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: 3.4.0   Edit
Assignee: Markus Kuppe CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 329054
Blocks:
  Show dependency tree
 
Reported: 2010-10-29 01:15 EDT by Markus Kuppe CLA
Modified: 2010-10-29 11:36 EDT (History)
1 user (show)

See Also:


Attachments
mylyn/context/zip (40.40 KB, application/octet-stream)
2010-10-29 02:37 EDT, Markus Kuppe CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Kuppe CLA 2010-10-29 01:15:42 EDT
!ENTRY org.eclipse.core.jobs 4 2 2010-10-29 07:14:38.484
!MESSAGE An internal error occurred during: "ServiceDiscoveryListener".
!STACK 0
java.lang.ClassCastException: org.eclipse.ecf.core.identity.StringID cannot be cast to org.eclipse.ecf.provider.dnssd.DnsSdServiceTypeID
	at org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryAdvertiser.connect(DnsSdDiscoveryAdvertiser.java:108)
	at org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer.connect(CompositeDiscoveryContainer.java:148)
	at org.eclipse.ecf.provider.discovery.SingletonDiscoveryContainer.connect(SingletonDiscoveryContainer.java:46)
	at org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$ServiceDiscoveryListener.connect(ServiceResource.java:63)
	at org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$1.run(ServiceResource.java:451)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Comment 1 Markus Kuppe CLA 2010-10-29 02:37:06 EDT
Fix released to master, merge to Release_3_4 pending
Comment 2 Markus Kuppe CLA 2010-10-29 02:37:09 EDT
Created attachment 182014 [details]
mylyn/context/zip
Comment 3 Markus Kuppe CLA 2010-10-29 05:26:40 EDT
merged to Release_3_4
Comment 4 Scott Lewis CLA 2010-10-29 09:18:38 EDT
I'm reopening this bug, as the fix appears to have caused a regression.  

Now, in my tests of the Service Discovery view this morning (Release_3_4 build #7), it does not seem to show any zeroconf service discovery at all.  It also doesn't seem to be showing the SLP update messages (in jobs view occasionally), as it was before.  In other words, the discovery view doesn't seem to work at all (although I can't be sure of that given that I don't have any slp services to discover on my network).
Comment 5 Scott Lewis CLA 2010-10-29 09:41:24 EDT
Something strange going on here.  I stopped and restarted Eclipse, and now the zeroconf discovery is working (!).  I did see an exception in the log (unfortunately I accidently closed before I copied it), and I restarted Eclipse and the service discovery is now working.

Now...with the zeroconf discovery working, I'm getting this output in log:

!ENTRY org.eclipse.osgi 2 1 2010-10-29 06:37:19.591
!MESSAGE NLS missing message: DnsSdDiscoveryException_1 in: org.eclipse.ecf.provider.dnssd.messages

!ENTRY org.eclipse.osgi 2 1 2010-10-29 06:37:19.591
!MESSAGE NLS missing message: DnsSdDiscoveryException_3 in: org.eclipse.ecf.provider.dnssd.messages

!ENTRY org.eclipse.ecf.discovery.model 4 0 2010-10-29 06:37:19.607
!MESSAGE No target id given and fallbacks failed
!STACK 1
org.eclipse.ecf.core.ContainerConnectException: No target id given and fallbacks failed
        at org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator.connect(DnsSdDiscoveryLocator.java:1
96)
        at org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer.connect(CompositeDiscovery
Container.java:148)
        at org.eclipse.ecf.provider.discovery.SingletonDiscoveryContainer.connect(SingletonDiscovery
Container.java:46)
        at org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$ServiceDiscoveryListener.conn
ect(ServiceResource.java:63)
        at org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$1.run(ServiceResource.java:45
5)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
!SUBENTRY 1 org.eclipse.ecf.identity 4 0 2010-10-29 06:37:19.607
!MESSAGE No target id given and fallbacks failed

!ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:25.341
!MESSAGE Cannot create a resource for 'ecf://192.168.1.100:5009/tcp/local/iana'; a registered resour
ce factory is needed

!ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:30.935
!MESSAGE Cannot create a resource for 'ecf://192.168.1.100:5000/tcp/local/iana'; a registered resour
ce factory is needed

!ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:45.201
!MESSAGE Cannot create a resource for 'ecf://192.168.1.102:3689/tcp/local/iana'; a registered resour
ce factory is needed

!ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:45.263
!MESSAGE Cannot create a resource for 'ecf://192.168.1.102:3689/tcp/local/iana'; a registered resour
ce factory is needed

!ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:45.263
!MESSAGE Cannot create a resource for 'ecf://192.168.1.102:3689/tcp/local/iana'; a registered resour
ce factory is needed
Comment 6 Scott Lewis CLA 2010-10-29 09:44:49 EDT
Just to follow up...I stopped/restarted Eclipse again, and now the Service Discovery is *not* working, and I got this in the log when I opened the Service Discovery UI:

!ENTRY org.eclipse.osgi 2 1 2010-10-29 06:42:24.544
!MESSAGE NLS missing message: DnsSdDiscoveryException_1 in: org.eclipse.ecf.provider.dnssd.messages

!ENTRY org.eclipse.osgi 2 1 2010-10-29 06:42:24.560
!MESSAGE NLS missing message: DnsSdDiscoveryException_3 in: org.eclipse.ecf.provider.dnssd.messages

!ENTRY org.eclipse.ecf.discovery.model 4 0 2010-10-29 06:42:24.560
!MESSAGE No target id given and fallbacks failed
!STACK 1
org.eclipse.ecf.core.ContainerConnectException: No target id given and fallbacks failed
        at org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator.connect(DnsSdDiscoveryLocator.java:1
96)
        at org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer.connect(CompositeDiscovery
Container.java:148)
        at org.eclipse.ecf.provider.discovery.SingletonDiscoveryContainer.connect(SingletonDiscovery
Container.java:46)
        at org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$ServiceDiscoveryListener.conn
ect(ServiceResource.java:63)
        at org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$1.run(ServiceResource.java:45
5)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
!SUBENTRY 1 org.eclipse.ecf.identity 4 0 2010-10-29 06:42:24.560
!MESSAGE No target id given and fallbacks failed
Comment 7 Markus Kuppe CLA 2010-10-29 11:08:16 EDT
(In reply to comment #5)

> !ENTRY org.eclipse.osgi 2 1 2010-10-29 06:37:19.591
> !MESSAGE NLS missing message: DnsSdDiscoveryException_1 in:
> org.eclipse.ecf.provider.dnssd.messages
> 
> !ENTRY org.eclipse.osgi 2 1 2010-10-29 06:37:19.591
> !MESSAGE NLS missing message: DnsSdDiscoveryException_3 in:
> org.eclipse.ecf.provider.dnssd.messages

These two are unused keys in org.eclipse.ecf.provider.dnssd.Messages.

> !ENTRY org.eclipse.ecf.discovery.model 4 0 2010-10-29 06:37:19.607
> !MESSAGE No target id given and fallbacks failed
> !STACK 1
> org.eclipse.ecf.core.ContainerConnectException: No target id given and
> fallbacks failed
>         at
> org.eclipse.ecf.provider.dnssd.DnsSdDiscoveryLocator.connect(DnsSdDiscoveryLocator.java:1
> 96)
>         at
> org.eclipse.ecf.provider.discovery.CompositeDiscoveryContainer.connect(CompositeDiscovery
> Container.java:148)
>         at
> org.eclipse.ecf.provider.discovery.SingletonDiscoveryContainer.connect(SingletonDiscovery
> Container.java:46)
>         at
> org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$ServiceDiscoveryListener.conn
> ect(ServiceResource.java:63)
>         at
> org.eclipse.ecf.discovery.ui.model.resource.ServiceResource$1.run(ServiceResource.java:45
> 5)
>         at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
> !SUBENTRY 1 org.eclipse.ecf.identity 4 0 2010-10-29 06:37:19.607
> !MESSAGE No target id given and fallbacks failed

What does your system's DNS search path look like? DNS-SD uses the system search path as the default scope/domain to discover services. If none is set, the provider will throw the CCE with "No target id given and fallbacks failed". This might subsequently stop the discovery ui from working.

> !ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:25.341
> !MESSAGE Cannot create a resource for
> 'ecf://192.168.1.100:5009/tcp/local/iana'; a registered resour
> ce factory is needed
> 
> !ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:30.935
> !MESSAGE Cannot create a resource for
> 'ecf://192.168.1.100:5000/tcp/local/iana'; a registered resour
> ce factory is needed
> 
> !ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:45.201
> !MESSAGE Cannot create a resource for
> 'ecf://192.168.1.102:3689/tcp/local/iana'; a registered resour
> ce factory is needed
> 
> !ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:45.263
> !MESSAGE Cannot create a resource for
> 'ecf://192.168.1.102:3689/tcp/local/iana'; a registered resour
> ce factory is needed
> 
> !ENTRY org.eclipse.ecf.discovery.model 1 0 2010-10-29 06:37:45.263
> !MESSAGE Cannot create a resource for
> 'ecf://192.168.1.102:3689/tcp/local/iana'; a registered resour
> ce factory is needed

This has been the default behavior of the discovery ui for ages. It tries to instantiate a service type specific EMF model and if no provider exists logs an info and goes with the generic model.
Comment 8 Markus Kuppe CLA 2010-10-29 11:36:36 EDT
Created bug #329054 to handle the underlying bug, marking as fixed.