Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@ihsandemir
Copy link
Collaborator

Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client instance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).

See the related issue for a reproducer of the problem. Unfortunately, I could not write a unit test for it since i needed global variable and static variable destruction which would require a separate test binary. Hence, i tests manually using the test code in the issue.

fixes #976

…order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
@ihsandemir ihsandemir added this to the 5.2.0 milestone Jun 1, 2022
@ihsandemir ihsandemir requested review from srknzl and yuce June 1, 2022 11:05
@ihsandemir ihsandemir self-assigned this Jun 1, 2022
@devOpsHazelcast
Copy link
Contributor

Windows test FAILed.

@devOpsHazelcast
Copy link
Contributor

Linux test FAILed.

@devOpsHazelcast
Copy link
Contributor

Linux test FAILed.

@devOpsHazelcast
Copy link
Contributor

Windows test FAILed.

@ihsandemir
Copy link
Collaborator Author

verify-linux

@devOpsHazelcast
Copy link
Contributor

Linux test FAILed.

@devOpsHazelcast
Copy link
Contributor

Linux test FAILed.

@devOpsHazelcast
Copy link
Contributor

Windows test PASSed.

@devOpsHazelcast
Copy link
Contributor

Linux test PASSed.

@devOpsHazelcast
Copy link
Contributor

Windows test PASSed.

@srknzl
Copy link

srknzl commented Jun 16, 2022

I did not quite understand what we are doing. Is the cout_lock global variable now instead of a static variable? If so, how does it help?

@ihsandemir ihsandemir merged commit 7a5321b into hazelcast:master Jun 20, 2022
@ihsandemir ihsandemir deleted the logger_mutex_lifecycle_fix branch June 20, 2022 07:36
@ihsandemir ihsandemir changed the title Make sure that the logger static lock mutex is not destroyed before any global client instance [API-1358] Make sure that the logger static lock mutex is not destroyed before any global client instance Jun 20, 2022
@devOpsHazelcast
Copy link
Contributor

Windows test PASSed.

@devOpsHazelcast
Copy link
Contributor

Linux test PASSed.

ihsandemir added a commit to ihsandemir/hazelcast-cpp-client that referenced this pull request Jun 20, 2022
…ny global client instance (hazelcast#977)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit to ihsandemir/hazelcast-cpp-client that referenced this pull request Jun 20, 2022
…ny global client instance (hazelcast#977)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit to ihsandemir/hazelcast-cpp-client that referenced this pull request Jun 20, 2022
…ny global client instance (hazelcast#977)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit to ihsandemir/hazelcast-cpp-client that referenced this pull request Jun 20, 2022
…ny global client instance (hazelcast#977)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit that referenced this pull request Jun 20, 2022
…ny global client instance (#977) (#992)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit that referenced this pull request Jun 20, 2022
…ny global client instance (#977) (#991)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit that referenced this pull request Jun 21, 2022
…ny global client instance (#977) (#994)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
ihsandemir added a commit that referenced this pull request Jun 21, 2022
…ny global client instance (#977) (#993)

* Changed the logger lock mutex so that we can control its destruction order properly. We do not want it destroyed before the client is destructed. We need to control the order. static initialization and destruction order is not controllable if it is not a member of the logger class. It can be destroyed before the any global client istance is destroyed since global variables are also in static duration (https://www.learncpp.com/cpp-tutorial/introduction-to-global-variables).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The static lock used in logger may be destructed before the client is destroyed which may cause [API-1358]

4 participants