Changeset 3a1cd51b


Ignore:
Timestamp:
Jul 28, 2011 6:22:31 PM (9 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
0d212f6
Parents:
18db940
Message:

split up big lock to avoid deadlocks

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/net/i2p/I2PAppContext.java

    r18db940 r3a1cd51b  
    110110    private File _appDir;
    111111    private File _tmpDir;
    112    
    113    
     112    // split up big lock on this to avoid deadlocks
     113    private final Object _lock1 = new Object(), _lock2 = new Object(), _lock3 = new Object(), _lock4 = new Object(),
     114                         _lock5 = new Object(), _lock6 = new Object(), _lock7 = new Object(), _lock8 = new Object(),
     115                         _lock9 = new Object(), _lock10 = new Object(), _lock11 = new Object(), _lock12 = new Object(),
     116                         _lock13 = new Object(), _lock14 = new Object(), _lock15 = new Object(), _lock16 = new Object(),
     117                         _lock17 = new Object();
     118
    114119    /**
    115120     * Pull the default context, creating a new one if necessary, else using
     
    386391    public File getTempDir() {
    387392        // fixme don't synchronize every time
    388         synchronized (this) {
     393        synchronized (_lock1) {
    389394            if (_tmpDir == null) {
    390395                String d = getProperty("i2p.dir.temp", System.getProperty("java.io.tmpdir"));
     
    410415    /** don't rely on deleteOnExit() */
    411416    public void deleteTempDir() {
    412         synchronized (this) {
     417        synchronized (_lock1) {
    413418            if (_tmpDir != null) {
    414419                FileUtil.rmdir(_tmpDir, false);
     
    544549
    545550    private void initializeStatManager() {
    546         synchronized (this) {
     551        synchronized (_lock2) {
    547552            if (_statManager == null)
    548553                _statManager = new StatManager(this);
     
    571576
    572577    private void initializeSessionKeyManager() {
    573         synchronized (this) {
     578        synchronized (_lock3) {
    574579            if (_sessionKeyManager == null)
    575580                //_sessionKeyManager = new PersistentSessionKeyManager(this);
     
    591596
    592597    private void initializeNamingService() {
    593         synchronized (this) {
     598        synchronized (_lock4) {
    594599            if (_namingService == null) {
    595600                _namingService = NamingService.createInstance(this);
     
    614619
    615620    private void initializeElGamalEngine() {
    616         synchronized (this) {
     621        synchronized (_lock5) {
    617622            if (_elGamalEngine == null) {
    618623                if ("off".equals(getProperty("i2p.encryption", "on")))
     
    639644
    640645    private void initializeElGamalAESEngine() {
    641         synchronized (this) {
     646        synchronized (_lock6) {
    642647            if (_elGamalAESEngine == null)
    643648                _elGamalAESEngine = new ElGamalAESEngine(this);
     
    659664
    660665    private void initializeAESEngine() {
    661         synchronized (this) {
     666        synchronized (_lock7) {
    662667            if (_AESEngine == null) {
    663668                if ("off".equals(getProperty("i2p.encryption", "on")))
     
    683688
    684689    private void initializeLogManager() {
    685         synchronized (this) {
     690        synchronized (_lock8) {
    686691            if (_logManager == null)
    687692                _logManager = new LogManager(this);
     
    702707
    703708    private void initializeHMAC() {
    704         synchronized (this) {
     709        synchronized (_lock9) {
    705710            if (_hmac == null) {
    706711                _hmac= new HMACGenerator(this);
     
    719724    /** @deprecated used only by syndie */
    720725    private void initializeHMAC256() {
    721         synchronized (this) {
     726        synchronized (_lock10) {
    722727            if (_hmac256 == null) {
    723728                _hmac256 = new HMAC256Generator(this);
     
    738743
    739744    private void initializeSHA() {
    740         synchronized (this) {
     745        synchronized (_lock11) {
    741746            if (_sha == null)
    742747                _sha= new SHA256Generator(this);
     
    756761
    757762    private void initializeDSA() {
    758         synchronized (this) {
     763        synchronized (_lock12) {
    759764            if (_dsa == null) {
    760765                if ("off".equals(getProperty("i2p.encryption", "on")))
     
    778783
    779784    private void initializeKeyGenerator() {
    780         synchronized (this) {
     785        synchronized (_lock13) {
    781786            if (_keyGenerator == null)
    782787                _keyGenerator = new KeyGenerator(this);
     
    797802
    798803    protected void initializeClock() { // overridden in RouterContext
    799         synchronized (this) {
     804        synchronized (_lock14) {
    800805            if (_clock == null)
    801806                _clock = new Clock(this);
     
    818823
    819824    private void initializeRoutingKeyGenerator() {
    820         synchronized (this) {
     825        synchronized (_lock15) {
    821826            if (_routingKeyGenerator == null)
    822827                _routingKeyGenerator = new RoutingKeyGenerator(this);
     
    835840
    836841    protected void initializeKeyRing() {
    837         synchronized (this) {
     842        synchronized (_lock16) {
    838843            if (_keyRing == null)
    839844                _keyRing = new KeyRing();
     
    853858
    854859    private void initializeRandom() {
    855         synchronized (this) {
     860        synchronized (_lock17) {
    856861            if (_random == null) {
    857862                //if (true)
  • router/java/src/net/i2p/router/RouterContext.java

    r18db940 r3a1cd51b  
    6060    private RouterThrottle _throttle;
    6161    private final Set<Runnable> _finalShutdownTasks;
     62    // split up big lock on this to avoid deadlocks
     63    private final Object _lock1 = new Object(), _lock2 = new Object();
    6264
    6365    private static List<RouterContext> _contexts = new ArrayList(1);
     
    412414    @Override
    413415    protected void initializeClock() {
    414         synchronized (this) {
     416        synchronized (_lock1) {
    415417            if (_clock == null)
    416418                _clock = new RouterClock(this);
     
    429431    @Override
    430432    protected void initializeKeyRing() {
    431         synchronized (this) {
     433        synchronized (_lock2) {
    432434            if (_keyRing == null)
    433435                _keyRing = new PersistentKeyRing(this);
Note: See TracChangeset for help on using the changeset viewer.