Skip to content

Commit 490ae95

Browse files
author
soranat.thiarachow
committed
ESDK-1517 Additional fix to ensure that only one thread releases resources in the uninitialize() method
1 parent 9e45fa5 commit 490ae95

File tree

4 files changed

+14
-35
lines changed

4 files changed

+14
-35
lines changed

Cpp-C/Ema/Src/Access/Impl/OmmBaseImpl.cpp

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ OmmBaseImpl::OmmBaseImpl(ActiveConfig& activeConfig) :
4949
_activeConfig(activeConfig),
5050
_userLock(),
5151
_dispatchLock(),
52-
_uninitializeLock(),
5352
_pipeLock(),
5453
_reactorDispatchErrorInfo(),
5554
_state(NotInitializedEnum),
@@ -82,7 +81,6 @@ OmmBaseImpl::OmmBaseImpl(ActiveConfig& activeConfig, OmmConsumerClient& adminCli
8281
_activeConfig(activeConfig),
8382
_userLock(),
8483
_dispatchLock(),
85-
_uninitializeLock(),
8684
_pipeLock(),
8785
_reactorDispatchErrorInfo(),
8886
_state(NotInitializedEnum),
@@ -116,7 +114,6 @@ OmmBaseImpl::OmmBaseImpl(ActiveConfig& activeConfig, OmmProviderClient& adminCli
116114
_activeConfig(activeConfig),
117115
_userLock(),
118116
_dispatchLock(),
119-
_uninitializeLock(),
120117
_pipeLock(),
121118
_reactorDispatchErrorInfo(),
122119
_state(NotInitializedEnum),
@@ -151,7 +148,6 @@ OmmBaseImpl::OmmBaseImpl( ActiveConfig& activeConfig, OmmConsumerErrorClient& cl
151148
_activeConfig( activeConfig ),
152149
_userLock(),
153150
_dispatchLock(),
154-
_uninitializeLock(),
155151
_pipeLock(),
156152
_reactorDispatchErrorInfo(),
157153
_state( NotInitializedEnum ),
@@ -193,7 +189,6 @@ OmmBaseImpl::OmmBaseImpl(ActiveConfig& activeConfig, OmmConsumerClient& adminCli
193189
_activeConfig(activeConfig),
194190
_userLock(),
195191
_dispatchLock(),
196-
_uninitializeLock(),
197192
_pipeLock(),
198193
_reactorDispatchErrorInfo(),
199194
_state(NotInitializedEnum),
@@ -235,7 +230,6 @@ OmmBaseImpl::OmmBaseImpl( ActiveConfig& activeConfig, OmmProviderErrorClient& cl
235230
_activeConfig( activeConfig ),
236231
_userLock(),
237232
_dispatchLock(),
238-
_uninitializeLock(),
239233
_pipeLock(),
240234
_reactorDispatchErrorInfo(),
241235
_state( NotInitializedEnum ),
@@ -275,7 +269,6 @@ OmmBaseImpl::OmmBaseImpl(ActiveConfig& activeConfig, OmmProviderClient& adminCli
275269
_activeConfig(activeConfig),
276270
_userLock(),
277271
_dispatchLock(),
278-
_uninitializeLock(),
279272
_pipeLock(),
280273
_reactorDispatchErrorInfo(),
281274
_state(NotInitializedEnum),
@@ -1364,13 +1357,6 @@ void OmmBaseImpl::uninitialize( bool caughtExcep, bool calledFromInit )
13641357
{
13651358
OmmBaseImplMap<OmmBaseImpl>::remove(this);
13661359

1367-
if (!calledFromInit) _uninitializeLock.lock();
1368-
1369-
if ( _state == NotInitializedEnum )
1370-
{
1371-
return;
1372-
}
1373-
13741360
_atExit = true;
13751361

13761362
if (isApiDispatching() && !caughtExcep)
@@ -1396,6 +1382,12 @@ void OmmBaseImpl::uninitialize( bool caughtExcep, bool calledFromInit )
13961382
{
13971383
if (!calledFromInit) _userLock.lock();
13981384
}
1385+
1386+
if ( _state == NotInitializedEnum )
1387+
{
1388+
if ( !calledFromInit ) _userLock.unlock();
1389+
return;
1390+
}
13991391

14001392
if ( _pRsslReactor )
14011393
{
@@ -1457,11 +1449,7 @@ void OmmBaseImpl::uninitialize( bool caughtExcep, bool calledFromInit )
14571449

14581450
_state = NotInitializedEnum;
14591451

1460-
if ( !calledFromInit )
1461-
{
1462-
_userLock.unlock();
1463-
_uninitializeLock.unlock();
1464-
}
1452+
if ( !calledFromInit ) _userLock.unlock();
14651453

14661454
#ifdef USING_POLL
14671455
delete[] _eventFds;

Cpp-C/Ema/Src/Access/Impl/OmmBaseImpl.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@ public :
226226
Mutex _dispatchLock;
227227
Mutex _pipeLock;
228228
Mutex _timeOutLock;
229-
Mutex _uninitializeLock;
230229
RsslErrorInfo _reactorDispatchErrorInfo;
231230
ImplState _state;
232231
RsslReactor* _pRsslReactor;

Cpp-C/Ema/Src/Access/Impl/OmmServerBaseImpl.cpp

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ OmmServerBaseImpl::OmmServerBaseImpl(ActiveServerConfig& activeServerConfig, Omm
4141
_pOmmProviderClient(&ommProviderClient),
4242
_userLock(),
4343
_dispatchLock(),
44-
_uninitializeLock(),
4544
_pipeLock(),
4645
_reactorDispatchErrorInfo(),
4746
_state( NotInitializedEnum ),
@@ -73,7 +72,6 @@ OmmServerBaseImpl::OmmServerBaseImpl(ActiveServerConfig& activeServerConfig, Omm
7372
_pOmmProviderClient(&ommProviderClient),
7473
_userLock(),
7574
_dispatchLock(),
76-
_uninitializeLock(),
7775
_pipeLock(),
7876
_reactorDispatchErrorInfo(),
7977
_state(NotInitializedEnum),
@@ -906,13 +904,6 @@ void OmmServerBaseImpl::uninitialize(bool caughtException, bool calledFromInit)
906904
{
907905
OmmBaseImplMap<OmmServerBaseImpl>::remove(this);
908906

909-
if (!calledFromInit) _uninitializeLock.lock();
910-
911-
if ( _state == NotInitializedEnum )
912-
{
913-
return;
914-
}
915-
916907
_atExit = true;
917908

918909
if (isApiDispatching() && !caughtException)
@@ -939,6 +930,12 @@ void OmmServerBaseImpl::uninitialize(bool caughtException, bool calledFromInit)
939930
if (!calledFromInit) _userLock.lock();
940931
}
941932

933+
if ( _state == NotInitializedEnum )
934+
{
935+
if ( !calledFromInit ) _userLock.unlock();
936+
return;
937+
}
938+
942939
_state = OmmServerBaseImpl::UnInitializingEnum;
943940

944941
if (_pRsslReactor)
@@ -1014,11 +1011,7 @@ void OmmServerBaseImpl::uninitialize(bool caughtException, bool calledFromInit)
10141011

10151012
_state = NotInitializedEnum;
10161013

1017-
if (!calledFromInit)
1018-
{
1019-
_userLock.unlock();
1020-
_uninitializeLock.unlock();
1021-
}
1014+
if (!calledFromInit) _userLock.unlock();
10221015

10231016
#ifdef USING_POLL
10241017
delete[] _eventFds;

Cpp-C/Ema/Src/Access/Impl/OmmServerBaseImpl.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,6 @@ class OmmServerBaseImpl : public OmmCommonImpl, public Thread, public TimeOutCli
215215
Mutex _dispatchLock;
216216
Mutex _pipeLock;
217217
Mutex _timeOutLock;
218-
Mutex _uninitializeLock;
219218
RsslErrorInfo _reactorDispatchErrorInfo;
220219
ServerImplState _state;
221220
RsslReactor* _pRsslReactor;

0 commit comments

Comments
 (0)