-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Data loss in webfilter (hazelcast 3.2.2) #2746
Comments
Wow amazing report, thanks :) |
Hi @dfex55 , The code snippet you used is not 3.2.2(mentioned in the issue title) but our master branch. is it the case? I have also simply added following test case and did not see the issue.
|
Hi @mesutcelik , To reproduce the bug, you have to slightly modify your test. Add an action to TestServlet:
then modify your test:
The bug happens within the same request. |
- we must check `hasHadoopPrefix` first before Paths.get(path).isAbsolute, because path such as `hdfs://something` fails on windows due to the `:` - there should be only one `assumeThatNoWindowsOS` to comment out if we want to test on Windows * Fix javadoc
GitOrigin-RevId: 296829b3a372c02fb12b06dc42a0f93195e8af47
Preconditions:
-> happens on failover and restart
Procedure to reproduce data loss:
-> data loss occured, should return "new"
What happens:
The call of getSession
calls fetchHazelcastSession()
Call of getSessionWithId(..) returns null, because MAP_SESSIONS is empty or does not contain the map, see:
Continue in fetchHazelcastSession():
Because of the valid session id and distributed content the boolean "existing" is true and createNewSession(…) is called. In createNewSession the method loadHazelcastSession() is called which loads the distributed map and copies its contents to the local cache.
After copying all entries to the local cache, prepareReloadingSession(..) is called (back in getSession(..)) and all local cache entries will be set to reload = true.
From here, every setAttribute("data", xxx) call updates the local cache, but if you call getAttribute("data") the value will be fetched again from the distributed map because reload is set to true.
Possible solutions are:
To me, both has to be implemented.
The text was updated successfully, but these errors were encountered: