@@ -126,8 +126,8 @@ public IRedisPubSubServer Start()
126
126
}
127
127
catch ( Exception ex )
128
128
{
129
- ex . Message . Print ( ) ;
130
- if ( this . OnError != null ) this . OnError ( ex ) ;
129
+ if ( this . OnError != null )
130
+ this . OnError ( ex ) ;
131
131
}
132
132
}
133
133
@@ -136,10 +136,18 @@ public IRedisPubSubServer Start()
136
136
137
137
private void Init ( )
138
138
{
139
- using ( var redis = ClientsManager . GetReadOnlyClient ( ) )
139
+ try
140
+ {
141
+ using ( var redis = ClientsManager . GetReadOnlyClient ( ) )
142
+ {
143
+ startedAt = Stopwatch . StartNew ( ) ;
144
+ serverTimeAtStart = redis . GetServerTime ( ) ;
145
+ }
146
+ }
147
+ catch ( Exception ex )
140
148
{
141
- serverTimeAtStart = redis . GetServerTime ( ) ;
142
- startedAt = Stopwatch . StartNew ( ) ;
149
+ if ( OnError != null )
150
+ OnError ( ex ) ;
143
151
}
144
152
145
153
DisposeHeartbeatTimer ( ) ;
@@ -161,14 +169,18 @@ void SendHeartbeat(object state)
161
169
if ( OnHeartbeatSent != null )
162
170
OnHeartbeatSent ( ) ;
163
171
164
- if ( Interlocked . CompareExchange ( ref status , 0 , 0 ) != Status . Started )
172
+ var currentStatus = Interlocked . CompareExchange ( ref status , 0 , 0 ) ;
173
+ if ( currentStatus != Status . Started )
174
+ {
165
175
return ;
176
+ }
166
177
167
178
NotifyAllSubscribers ( ControlCommand . Pulse ) ;
168
179
169
180
if ( DateTime . UtcNow - new DateTime ( lastHeartbeatTicks ) > HeartbeatTimeout )
170
181
{
171
- if ( Interlocked . CompareExchange ( ref status , 0 , 0 ) == Status . Started )
182
+ currentStatus = Interlocked . CompareExchange ( ref status , 0 , 0 ) ;
183
+ if ( currentStatus == Status . Started )
172
184
{
173
185
Restart ( ) ;
174
186
}
0 commit comments