Skip to content
This repository has been archived by the owner on Jun 4, 2018. It is now read-only.

Protect access to the shared Wallet structure. #146

Merged
merged 1 commit into from
Jul 29, 2016

Conversation

jrick
Copy link
Member

@jrick jrick commented Jul 29, 2016

Because both the UI thread and the wallet RPC synchronization tasks
may access the wallet structure at the same time, access to the
structure must be synchronized. Add a new Mutex type which when
unlocked, provides access to the underlying locked instance (in this
case, the Wallet). This ensures that (unless the wallet reference is
leaked outside of the exclusive access) all access to the wallet only
occurs when the lock is held. This is also preferable to acquiring a
private mutex in each of the Wallet's public APIs as it allows
multiple public APIs to be called without any other tasks from
changing wallet state inbetween calls.

The mutex can only be acquired asynchronously. This ensures that the
UI thread never blocks attempting to access wallet state.

Fixes #114.

@marcopeereboom
Copy link
Member

OK if you add some UT.

@jrick
Copy link
Member Author

jrick commented Jul 29, 2016

@marcopeereboom
Copy link
Member

fantastic tOK

Because both the UI thread and the wallet RPC synchronization tasks
may access the wallet structure at the same time, access to the
structure must be synchronized.  Add a new Mutex<T> type which when
unlocked, provides access to the underlying locked instance (in this
case, the Wallet).  This ensures that (unless the wallet reference is
leaked outside of the exclusive access) all access to the wallet only
occurs when the lock is held.  This is also preferable to acquiring a
private mutex in each of the Wallet's public APIs as it allows
multiple public APIs to be called without any other tasks from
changing wallet state inbetween calls.

The mutex can only be acquired asynchronously.  This ensures that the
UI thread never blocks attempting to access wallet state.

Fixes #114.
@jrick jrick merged commit 4719963 into decred:master Jul 29, 2016
@jrick jrick deleted the asyncwalletmutex branch July 29, 2016 18:57
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants