Failure creating a participant

4 posts / 0 new
Last post
Offline
Last seen: 11 years 7 months ago
Joined: 03/18/2013
Posts: 5
Failure creating a participant

I'm porting an application from Sun using NDDS 4.0i to Intel running Red Hawk and NDDS 4.0i (then we'll move to 4.5). It was working great. Now, with the port, I'm failing to create a participant. I'm getting the following (typed in by hand since the real thing can be copied to the internet)

[New Thread 0xb59b4b90 (LWP 13945)]

COMMENDSrWriterServicde_createWriter:!create entrypoint

PRESPsService_enableLocalEndpointWithCursor:!createWriter in srwService

DISCDynamicEndpointAnnouncer_enable:!enable endpoint

DISCDynamic_enable:!enable endpoint announcer

DDS_DomainParticipantDiscovery_enableI:!enable dynamic discovery

DDS_DomainParticipant_enableI:!enable discovery

[Thread 0xb59b4b90(LWP13945) exited]

DDSDomainParticipantFactory_impl::create_participant():!create failure creating participant

 

I have another part of the application (mulitple executables) that made this call just fine. They did have different domain/participant id profiles. (0, 1) worked while (0, 2) failed.

 

I appreaciate any help. This moving from one environment to another is tricky.

Organization:
rose's picture
Offline
Last seen: 3 years 3 months ago
Joined: 08/22/2011
Posts: 148

Hello, 

The first question I have is: are you setting the participant IDs explicitly?  Or are you just noticing that participants with higher IDs are failing? (I do not remember whether automatic setting of participant IDs was supported in 4.0j).

My next question is: is the network interface up when you are creating the participants?

Assuming that you are setting the participant ID explicitly, this is what we do when we try to create an entryport:

  • Calculate a set of ports based on the domain ID and the participant ID - using the well known ports algorithm.
  • Try to grab a set of ports for each transport - for example, if you have shared memory and UDPv4 both installed, we are going to
    • Shared memory: try to open a port for discovery (unicast) and user data (unicast) 
    • UDPv4:  try to open up a port for discovery unicast, discovery multicast, and user data unicast

If this attempt to bind the ports/create the shared memory regions fails, it will show the error that you see: !create entryport.

If you are not setting the participant ID explicitly, we will start with participant ID 0, and then if we fail to open the first set of four ports, we will increment the participant ID until we find a set of four ports that are available.

So, ultimately, I think the problem is that we are trying to open ports that are not available on your new system, either because something else is using them already, or because there is no network up.

Thank you!

Rose

Offline
Last seen: 11 years 7 months ago
Joined: 03/18/2013
Posts: 5

First of all, thanks for reading through the typo I had at the beginning of my description (create entryport vs create entrypoint). I was using hard-coded participant IDs, and I was wrong - it was an id of 1 that failed. I changed things around and other values work. I just need to figure out why 1 fails. I may just move on and worry about it later.

Thanks for the quick response - it seems to hit the nail on the head.

rose's picture
Offline
Last seen: 3 years 3 months ago
Joined: 08/22/2011
Posts: 148

You are very welcome - I'm glad that helped!

Rose