Skip to content
This repository has been archived by the owner on Aug 13, 2023. It is now read-only.

Race Condition in SunshineRepository.getInstance #38

Open
ronykrell opened this issue Mar 28, 2019 · 0 comments
Open

Race Condition in SunshineRepository.getInstance #38

ronykrell opened this issue Mar 28, 2019 · 0 comments

Comments

@ronykrell
Copy link

There is a race condition in the getInstance method in SunshineRepository.java.

Imagine there are 2 threads - A and B - both calling getInstance() and that sInstance is null to start with

Thread A
Checks if sInstance is null. Returns True

Thread B
Checks if sInstance is null. Returns True

Thread A
Obtains the lock and creates a new instance for sInstance. Releases lock

Thread B
Remember Thread B already checked if sInstance was null earlier.
Obtains the lock and creates a new instance for sInstance. Releases lock

There should be a second null check inside the synchronized block.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant