Skip to content

InvalidOperationException occurs when connection lost due to server termination #13

@ghost

Description

Sometimes when server terminates (in my case that's due to dev process), I'm getting unhandled InvalidOperationException with following StackTrace:

  at Socket.Io.Client.Core.SocketIoClient.ThrowIfNotRunning () [0x0001d] in <bbaaad4edc1b4f24be66d9e834056ead>:0 
  at Socket.Io.Client.Core.SocketIoClient.Send (Socket.Io.Client.Core.Model.SocketIo.Packet packet) [0x00000] in <bbaaad4edc1b4f24be66d9e834056ead>:0 
  at Socket.Io.Client.Core.SocketIoClient.<OnHandshake>b__41_0 (System.Int64 i) [0x00030] in <bbaaad4edc1b4f24be66d9e834056ead>:0 
  at System.Reactive.AnonymousSafeObserver`1[T].OnNext (T value) [0x0000a] in /_/Rx.NET/Source/src/System.Reactive/AnonymousSafeObserver.cs:43 
  at System.Reactive.Sink`1[TTarget].ForwardOnNext (TTarget value) [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Internal/Sink.cs:49 
  at System.Reactive.Linq.ObservableImpl.Timer+Periodic+_.Tick () [0x00011] in /_/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timer.cs:168 
  at System.Reactive.Linq.ObservableImpl.Timer+Periodic+_+<>c.<Run>b__4_0 (System.Reactive.Linq.ObservableImpl.Timer+Periodic+_ this) [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Linq/Observable/Timer.cs:141 
  at System.Reactive.Concurrency.Scheduler+<>c__67`1[TState].<SchedulePeriodic>b__67_0 (System.ValueTuple`2[T1,T2] t) [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/Scheduler.Services.Emulation.cs:79 
  at (wrapper delegate-invoke) System.Func`2[System.ValueTuple`2[System.Reactive.Linq.ObservableImpl.Timer+Periodic+_,System.Action`1[System.Reactive.Linq.ObservableImpl.Timer+Periodic+_]],System.ValueTuple`2[System.Reactive.Linq.ObservableImpl.Timer+Periodic+_,System.Action`1[System.Reactive.Linq.ObservableImpl.Timer+Periodic+_]]].invoke_TResult_T(System.ValueTuple`2<System.Reactive.Linq.ObservableImpl.Timer/Periodic/_, System.Action`1<System.Reactive.Linq.ObservableImpl.Timer/Periodic/_>>)
  at System.Reactive.Concurrency.DefaultScheduler+PeriodicallyScheduledWorkItem`1+<>c[TState].<Tick>b__5_0 (System.Reactive.Concurrency.DefaultScheduler+PeriodicallyScheduledWorkItem`1[TState] closureWorkItem) [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/DefaultScheduler.cs:127 
  at System.Reactive.Concurrency.AsyncLock+<>c__5`1[TState].<Wait>b__5_0 (System.Delegate actionObject, System.Object stateObject) [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs:53 
  at System.Reactive.Concurrency.AsyncLock.Wait (System.Object state, System.Delegate delegate, System.Action`2[T1,T2] action) [0x0009a] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs:105 
  at System.Reactive.Concurrency.AsyncLock.Wait[TState] (TState state, System.Action`1[T] action) [0x0000e] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/AsyncLock.cs:53 
  at System.Reactive.Concurrency.DefaultScheduler+PeriodicallyScheduledWorkItem`1[TState].Tick () [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/DefaultScheduler.cs:125 
  at System.Reactive.Concurrency.ConcurrencyAbstractionLayerImpl+PeriodicTimer.Tick () [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/ConcurrencyAbstractionLayerImpl.cs:210 
  at System.Reactive.Concurrency.ConcurrencyAbstractionLayerImpl+PeriodicTimer+<>c.<.ctor>b__2_0 (System.Object this) [0x00000] in /_/Rx.NET/Source/src/System.Reactive/Concurrency/ConcurrencyAbstractionLayerImpl.cs:207 
  at System.Threading.Timer+Scheduler.TimerCB (System.Object o) [0x00007] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Threading/Timer.cs:369 
  at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem () [0x00015] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:1337 
  at System.Threading.ThreadPoolWorkQueue.Dispatch () [0x00074] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:899 
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback () [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:1261 

My expectation for this case is to get ErrorEvent or ProbeErrorEvent in appropriate observable, but they aren't called. As this isn't called from my code, but from scheduled in library periodic task, I have no way of handling that exception.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions