[QFJ-185] Improper use of synchronized keyword Created: 30/May/07 Updated: 04/Jul/07 Resolved: 01/Jun/07 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | Engine |
Affects Version/s: | 1.1.0 |
Fix Version/s: | 1.2.0 |
Type: | Bug | Priority: | Major |
Reporter: | Qiyan Li | Assignee: | Steve Bate |
Resolution: | Fixed | Votes: | 0 |
Labels: | None | ||
Environment: |
All |
Description |
In the quickfix.SocketInitiator class, lines [77, 84] are as follows (version 1.1.0 source code): private void initialize() throws ConfigError { isStarted = Boolean.TRUE; which incorrectly uses the synchronized keyword because Java locks on objects not variables. In other words, threads would lock on Boolean.TRUE and Boolean.FALSE, which could in turn cause deadlocks. |
Comments |
Comment by Steve Bate [ 30/May/07 ] |
Good catch. That's been there for about 1.5 years now. I don't even remember why it was done. It looks like a normal synchronization method would be fine. I'll make the changes in 1.1.1. |