Ryan Herbert created PROTON-2396:
------------------------------------

             Summary: Seed in uuid.cpp can lead to duplicates
                 Key: PROTON-2396
                 URL: https://issues.apache.org/jira/browse/PROTON-2396
             Project: Qpid Proton
          Issue Type: Bug
          Components: cpp-binding
         Environment: RHEL7 running in OpenStack
docker-ce 19.03.5
qpid-proton 0.28.0
qpid-cpp 1.37.0
            Reporter: Ryan Herbert


The random number seed used in qpid-proton/cpp/src/uuid.cpp is based on the 
current time and the PID of the running process.  When starting multiple proton 
instances simultaneously in Docker containers via automated deployment, there 
is a high probability that multiple instances will get the same seed since the 
PID within the Docker container is consistent and the same across multiple 
copies of the same Docker container.

This results in duplicate link names when binding to exchanges. When this 
happens, the queue gets bound to two different exchanges, and requests sent to 
one exchange will get responses from both services.

To work around this error, we are specifying the link name via 
sender_options/receiver_options every time we open a new sender/receiver, and 
we also specify the container_id in connection_options.  We are using 
std::mt19937_64 seeded with 
std::chrono::system_clock::now().time_since_epoch.count() to generate the 
random part of our link names, which seems to have enough randomness that it 
has eliminated the problem for us.

As pointed out in the Proton user forum, std::random_device is probably a 
better choice for initializing the seed.

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to