Kbase P38976: On occasion, WS broker unregisters with the NameServer in WebSpeed 3.1D
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  7/20/2004 |
|
Status: Verified
FACT(s) (Environment):
Progress 9.x
FACT(s) (Environment):
WebSpeed 3.x
SYMPTOM(s):
On occasion, any running unified broker unregisters with the NameServer
On occasion, WS broker unregisters with the NameServer
On occasion, AppServer broker unregisters with the NameServer
One or multiple brokers sporadically unregister with the NameServer
All unregistered brokers remains up, however can not recieve subsequent requests
Unregistering Broker <Broker Name>. (8210)
Errors are listed in the NameServer log file not after broker goes down.
Problem happens at random.
CAUSE:
Bug# 20030807-024
CAUSE:
When the broker starts, it picks a "random" UDP port, for listening for responses from the NameServer. When it sends the registration message to the nameserver, it sends the message to the nameserver's well-known port. This message contains the port number of the broker's UDP listening port. The NameServer reads this port number from the message, and when it needs to, sends the ack message back to the broker on the broker's UDP port. This is handled by keepalive thread between broker and name server.
The customer had their application hosted on a "server-farm", basically renting a server from someone who maintained a large pool of servers. All the servers were part of a group that supported Microsoft's version of load balancing. They were supposedly set up in such a way that when a request came in for a network resource, if the server that should be handling that request was busy, the request would be routed to all servers, and one of the servers would handle it.
This mechanism was implemented with UDP. What ended up happening is that the Microsoft load balancing ended up sending UDP packets to the broker's UDP listening port. The packet was not in the format that the broker expected. The broker had a bug in that any single packet in an unrecognised format would cause the broker's keepalive thread to terminate. So, although the broker was up and running fine, the keepalive thread, which constantly registers the broker with the nameserver, stopped sending messages to the nameserver. The nameserver unregistered the broker because it had not received any registration packets from the broker, within the specified timeout.
FIX:
This issue has been fixed in Progress 9.1D08 and later. Please apply this service pack level or a later release to obtain the fix. The fix is to ignore any bad packets that came in when looking for packets from the nameserver.