Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix/noid/fix websocket connection for chat #4448

Merged
merged 4 commits into from
Nov 14, 2024

Commits on Nov 14, 2024

  1. fix check for remote server

    As remote server is empty instead null when not available, the check was also true when no remote server was in use.
    
    Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
    mahibi committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    e51ab67 View commit details
    Browse the repository at this point in the history
  2. fix ANR error (blockingSubscribe in setupWebsocket)

    The request seems to cause problems so blockingSubscribe doesn't seem to be a good choice here. This commit will replace blockingSubscribe by subscribe and modify the related code in order to be executed when the request succeeds.
    The root cause why the request seems to cause problems may have to be analyzed further.
    
    I was not able to reproduce the ANR without this PR, however the following error was reported on gplay console very often!:
    
          at jdk.internal.misc.Unsafe.park (Native method)
          at java.util.concurrent.locks.LockSupport.park (LockSupport.java:341)
          at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block (AbstractQueuedSynchronizer.java:506)
          at java.util.concurrent.ForkJoinPool.unmanagedBlock (ForkJoinPool.java:3466)
          at java.util.concurrent.ForkJoinPool.managedBlock (ForkJoinPool.java:3437)
          at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1623)
          at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:435)
          at io.reactivex.internal.operators.observable.ObservableBlockingSubscribe.subscribe (ObservableBlockingSubscribe.java:56)
          at io.reactivex.Observable.blockingSubscribe (Observable.java:5552)
          at com.nextcloud.talk.chat.ChatActivity.setupWebsocket (ChatActivity.kt:2445)
          at com.nextcloud.talk.chat.ChatActivity.joinRoomWithPassword (ChatActivity.kt:2402)
          at com.nextcloud.talk.chat.ChatActivity.initObservers$lambda$13 (ChatActivity.kt:594)
          at com.nextcloud.talk.chat.ChatActivity.$r8$lambda$QKH5JCFLmCzRMlSJ-EV-m4IW5ig (unavailable)
          at com.nextcloud.talk.chat.ChatActivity$$ExternalSyntheticLambda38.invoke (D8$$SyntheticClass)
          at com.nextcloud.talk.chat.ChatActivity$sam$androidx_lifecycle_Observer$0.onChanged (unavailable:2)
          at androidx.lifecycle.LiveData.considerNotify (LiveData.java:133)
          at androidx.lifecycle.LiveData.dispatchingValue (LiveData.java:151)
          at androidx.lifecycle.LiveData.setValue (LiveData.java:309)
          at androidx.lifecycle.MutableLiveData.setValue (MutableLiveData.java:50)
          at com.nextcloud.talk.chat.viewmodels.ChatViewModel.getCapabilities (ChatViewModel.kt:240)
          at com.nextcloud.talk.chat.ChatActivity$initObservers$1$1.invokeSuspend (ChatActivity.kt:553)
          at com.nextcloud.talk.chat.ChatActivity$initObservers$1$1.invoke (unavailable:8)
          at com.nextcloud.talk.chat.ChatActivity$initObservers$1$1.invoke (unavailable:4)
          at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2.emit (Emitters.kt:219)
          at kotlinx.coroutines.flow.FlowKt__ErrorsKt$catchImpl$2.emit (Errors.kt:154)
          at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2.emit (Emitters.kt:220)
          at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl (SharedFlow.kt:392)
          at kotlinx.coroutines.flow.SharedFlowImpl$collect$1.invokeSuspend (unavailable:15)
          at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
          at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
          at android.os.Handler.handleCallback (Handler.java:938)
          at android.os.Handler.dispatchMessage (Handler.java:99)
          at android.os.Looper.loopOnce (Looper.java:210)
          at android.os.Looper.loop (Looper.java:299)
          at android.app.ActivityThread.main (ActivityThread.java:8168)
          at java.lang.reflect.Method.invoke (Native method)
          at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:556)
          at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1037)
    
    Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
    mahibi committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    3bd1a53 View commit details
    Browse the repository at this point in the history
  3. fix check if federated is still the same

    Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
    mahibi committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    8dd1b88 View commit details
    Browse the repository at this point in the history
  4. add disposable

    however i was not able to see onDestroy being executed.
    
    anyway, disposables won't be necessary when coroutine is used.
    
    also: remove a useless outdated log line
    
    Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
    mahibi committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    acd9648 View commit details
    Browse the repository at this point in the history