[ https://issues.apache.org/jira/browse/GEODE-4083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Shu resolved GEODE-4083. ----------------------------- Resolution: Fixed Fix Version/s: 1.4.0 > RegionVersionVector.updateLocalVersion can go into an infinite loop > ------------------------------------------------------------------- > > Key: GEODE-4083 > URL: https://issues.apache.org/jira/browse/GEODE-4083 > Project: Geode > Issue Type: Bug > Components: regions > Reporter: Darrel Schneider > Assignee: Eric Shu > Fix For: 1.4.0 > > > RegionVersionVector.updateLocalVersion can go into an infinite loop. > The problem is this code: > {code} > private void updateLocalVersion(long version) { > boolean repeat = false; > do { > long myVersion = this.localVersion.get(); > if (myVersion < version) { > repeat = !this.localVersion.compareAndSet(myVersion, version); > } > } while (repeat); > } > {code} > if version is "1" and localVersion.get() returns "0" the first time it is > called but then compareAndSet returns false because localVersion has changed > to "2" then the loop will never terminate because repeat will always be false > and myVersion ("2" or more) will never be less than version ("1"). > The simple fix is to be sure repeat is set to false when myVersion is >= to > version. -- This message was sent by Atlassian JIRA (v6.4.14#64029)