Build Update for apache/geode-native ------------------------------------- Build: #2790 Status: Broken
Duration: 1 min and 47 secs Commit: 72455cd (develop) Author: Mario Salazar de Torres Message: GEODE-8553: Fix inter-locks in ThinClientLocator (#660) - ThinClientLocatorHelper uses a mutex called m_locatorLock, which is used in the entire scope of all the public member functions for this class. - Problem with that is all of those functions perform some network communication and in the event of networking issues, this will result in having all the application threads inter-locked. - Also, the only purpose of this mutex is to avoid that the locators list is read while it's being updated. - Given all of the above, the class has been refactored, so every time the locators list has to be accessed, a copy of it is created, being that copy created only while owning the mutex. - And for the case of the update, a new locators list is composed and its only at the end of the update function where the mutex is locked and the locators list swapped by the new one. - This whole change ensures that the time the mutex is in use is minimal while the functionality remains intact. - Refactored ConnectionWrapper so is move constructible. - Locators list is now initialized using iterator range constructor. - Added getConnRetries utility function. - Changed mutex for a shared mutex. - getLocators function now returns a shuffled list each time. - Cleaned-up repeated code. As a result of this createConnection has been refactored and a new function called sendRequest has been created. - Implemented proposal for locator connections retries, treating the locators list as a circular buffer. - Added new integration test to verify that threads don't inter-lock anymore. - The test works as follow: * Set 5s connect-timeout. * Deploy 1 locator. * Add 1 non-existent locator to the pool. * Send 64 concurrent requests to get the server list. * By probability if there are no interlocks ~50%+-E% of the requests should have completed in a brief period of time. * Note that E% is the error allowance percentage, which is set to 10%. * Therefore a 10 seconds timeout is set in order to reach the request completed treshold. * Test passes if the number of completed requests before the timeout was greater or equal to the thresholds, otherwise it fails. View the changeset: https://github.com/apache/geode-native/compare/a771a1ec215c...72455cd0811b View the full build log and details: https://travis-ci.com/github/apache/geode-native/builds/202227263?utm_medium=notification&utm_source=email -- You can unsubscribe from build emails from the apache/geode-native repository going to https://travis-ci.com/account/preferences/unsubscribe?repository=16807653&utm_medium=notification&utm_source=email. Or unsubscribe from *all* email updating your settings at https://travis-ci.com/account/preferences/unsubscribe?utm_medium=notification&utm_source=email. Or configure specific recipients for build notifications in your .travis.yml file. See https://docs.travis-ci.com/user/notifications.