RP/TUX 8.0 - WLE 5.1 Remote and Local factory name clash (Doc ID 771090.1)

Last updated on NOVEMBER 04, 2016

Applies to:

Oracle Tuxedo / Tuxedo / 8
Information in this document applies to any platform

Goal

Solaris 8
Certain factory names result in a clash and the TMFFNAME will return the following error when trying to do
TP::register_factory() :
141355.MAURICE!TMFFNAME.1708.384.0: LIBMFF_CAT:1091: ERROR: Local factory and remote factory cannot have the same
identifier '1,ClientAcceptServiceFactory,FactoryInterface,'.
The problem is in the NameManager.cpp file around line 1583 (see code below):
  NamedObject* found = (NamedObject*)0;
  do {
    if (curr->equal(lnp) && (curr ->getFlagFld() & NO_REM_ENTRY)) { 
      // We've found an interface name match, *and* the NO_REM_ENTRY
      // flag is (indicating it to be a remote implementation);
      // set "found" handle and exit
      found = curr;
      break;
    }
    curr = curr->getNext();
  // exit if bucket empty or we have traversed it completely
  } while ((curr != NULL) && (curr != head)); 

Here, the test "curr->equal(lnp)" is incorrect because it compares a local name and a remote name. When
the named object obtained is a remote object then the m_lname contains the remote name and the local name is put in
the m_facname member (according to the NameManager::addEntry() code, look for DM_REMOTE). When the named object is
local, the m_lname member contains the local name and the m_facname member is empty.

Solution

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms