decentraland / unity-explorer

Apache License 2.0
8 stars 11 forks source link

LiveKit implementation exceptions #1129

Open Kinerius opened 4 months ago

Kinerius commented 4 months ago

The whole LiveKit ecosystem has some unhandled Exceptions that might break the flow during sudden disconnections or the disposal of the application, we should carefully handle those exceptions gracefully.

Some of those throws were ignored here https://github.com/decentraland/unity-explorer/pull/1127 as an effort to increase stability but we need to review the whole package.

mikhail-dcl commented 2 months ago
KeyNotFoundException: The given key 'SIGNER' was not present in the dictionary.
System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) (at <b11ba2a8fbf24f219f7cc98532a11304>:0)
DCL.Web3.Chains.AuthChain.Get (DCL.Web3.Chains.AuthLinkType type) (at Assets/DCL/Web3/Chains/AuthChain.cs:41)
DCL.Web3.Identities.DecentralandIdentity.AssertSigner (DCL.Web3.Chains.AuthChain authChain) (at Assets/DCL/Web3/Identities/DecentralandIdentity.cs:64)
DCL.Web3.Identities.DecentralandIdentity.Sign (System.String entityId) (at Assets/DCL/Web3/Identities/DecentralandIdentity.cs:55)
DCL.Web3.Identities.LogWeb3Identity.Sign (System.String entityId) (at Assets/DCL/Web3/Identities/LogWeb3Identity.cs:68)
DCL.Multiplayer.Connections.Archipelago.Rooms.ArchipelagoIslandRoom.WelcomePeerIdAsync (System.String adapterUrl, System.Threading.CancellationToken token) (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:126)
DCL.Multiplayer.Connections.Archipelago.Rooms.ArchipelagoIslandRoom.WelcomePeerIdAsync (System.String adapterUrl, System.Threading.CancellationToken token) (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:128)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1[TResult].GetResult (System.Int16 token) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:244)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2[TStateMachine,T].GetResult (System.Int16 token) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:342)
Cysharp.Threading.Tasks.UniTask`1+Awaiter[T].GetResult () (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:653)
DCL.Multiplayer.Connections.Archipelago.Rooms.ArchipelagoIslandRoom.ConnectToArchipelagoAsync (System.Threading.CancellationToken token) (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:115)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1[TResult].GetResult (System.Int16 token) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:244)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`1[TStateMachine].GetResult (System.Int16 token) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:218)
Cysharp.Threading.Tasks.UniTask+Awaiter.GetResult () (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:312)
DCL.Multiplayer.Connections.Archipelago.Rooms.ArchipelagoIslandRoom.PrewarmAsync (System.Threading.CancellationToken token) (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:86)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1[TResult].GetResult (System.Int16 token) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:244)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`1[TStateMachine].GetResult (System.Int16 token) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:218)
Cysharp.Threading.Tasks.UniTask+Awaiter.GetResult () (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:312)
DCL.Multiplayer.Connections.Rooms.Connective.ConnectiveRoom.RunAsync () (at Assets/DCL/Multiplayer/Connections/Rooms/Connective/ConnectiveRoom.cs:120)
UnityEngine.Debug:LogException(Exception)
Cysharp.Threading.Tasks.UniTaskScheduler:PublishUnobservedTaskException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskScheduler.cs:90)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskVoidMethodBuilder:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskVoidMethodBuilder.cs:53)
DCL.Multiplayer.Connections.Rooms.Connective.<RunAsync>d__15:MoveNext() (at Assets/DCL/Multiplayer/Connections/Rooms/Connective/ConnectiveRoom.cs:122)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskVoid`1:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:104)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:167)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`1:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:210)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:59)
DCL.Multiplayer.Connections.Archipelago.Rooms.<PrewarmAsync>d__12:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:87)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`1:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:189)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:167)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`1:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:210)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:59)
DCL.Multiplayer.Connections.Archipelago.Rooms.<ConnectToArchipelagoAsync>d__15:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:116)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`1:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:189)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:167)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:334)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetException(Exception) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:186)
DCL.Multiplayer.Connections.Archipelago.Rooms.<WelcomePeerIdAsync>d__16:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/Rooms/ArchipelagoIslandRoom.cs:128)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetResult(String) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:139)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetResult(String) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:328)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetResult(String) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:201)
DCL.Multiplayer.Connections.Archipelago.SignFlow.<MessageForSignAsync>d__6:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/SignFlow/LogArchipelagoSignFlow.cs:40)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetResult(String) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:139)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetResult(String) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:328)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetResult(String) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:201)
DCL.Multiplayer.Connections.Archipelago.SignFlow.<MessageForSignAsync>d__5:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/SignFlow/LiveConnectionArchipelagoSignFlow.cs:65)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:139)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:328)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:201)
DCL.Multiplayer.Connections.Archipelago.LiveConnections.<SendAndReceiveAsync>d__4`1:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/LiveConnections/IArchipelagoLiveConnection.cs:56)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:139)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:328)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:201)
DCL.Multiplayer.Connections.Archipelago.LiveConnections.<SendAndReceiveAsync>d__3:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/LiveConnections/IArchipelagoLiveConnection.cs:48)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:139)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:328)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:201)
DCL.Multiplayer.Connections.Archipelago.LiveConnections.<ReceiveAsync>d__10:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/LiveConnections/LogArchipelagoLiveConnection.cs:68)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
Cysharp.Threading.Tasks.AwaiterActions:Continuation(Object) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTask.cs:21)
Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1:TrySetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/UniTaskCompletionSource.cs:139)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:328)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTaskMethodBuilder`1:SetResult(MemoryWrap) (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/AsyncUniTaskMethodBuilder.cs:201)
DCL.Multiplayer.Connections.Archipelago.LiveConnections.<ReceiveAsync>d__11:MoveNext() (at Assets/DCL/Multiplayer/Connections/Archipelago/LiveConnections/WebSocketArchipelagoLiveConnection.cs:87)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask`2:Run() (at ./Library/PackageCache/com.cysharp.unitask@73d86259ce/Runtime/CompilerServices/StateMachineRunner.cs:313)
UnityEngine.UnitySynchronizationContext:ExecuteTasks()
NickKhalow commented 1 week ago

closed in fix: Exceptions migrate to Result<> #1897