Synchronize conversation error for twilio conversation sdk - twilio

I have followed Android quickstart conversations project
I am facing a crash with following details -
com.twilio.conversations.ListenerException: Exception thrown by a listener. Your application might have a problem in listener implementation. Listeners must never throw uncaught exceptions. See 'Caused by:' below for more details.
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
at com.twilio.conversations.internal.RethrowingForwarder$RethrowingProxy.invoke(RethrowingForwarder.java:123)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006)
at $Proxy10.onSuccess(Unknown Source)
at com.twilio.conversations.internal.CallbackListenerForwarder$1.run(CallbackListenerForwarder.java:34)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Caused by: java.lang.IllegalStateException: Messages are not available at the moment. Synchronize the conversation first.
at com.twilio.conversations.ConversationImpl.getMessages(ConversationImpl.java:214)
at com.twilio.conversations.ConversationImpl.getLastMessages(ConversationImpl.java:282)
at QuickstartConversationsManager.loadPreviousMessages(QuickstartConversationsManager.java:222)
at QuickstartConversationsManager.access$600(QuickstartConversationsManager.java:43)
at QuickstartConversationsManager$3.onSuccess(QuickstartConversationsManager.java:156)
at QuickstartConversationsManager$3.onSuccess(QuickstartConversationsManager.java:147)
at java.lang.reflect.Method.invoke(Native Method)
at com.twilio.conversations.internal.RethrowingForwarder$RethrowingProxy.invoke(RethrowingForwarder.java:121)
at java.lang.reflect.Proxy.invoke(Proxy.java:1006) 
at $Proxy10.onSuccess(Unknown Source) 
at com.twilio.conversations.internal.CallbackListenerForwarder$1.run(CallbackListenerForwarder.java:34) 
at android.os.Handler.handleCallback(Handler.java:883) 
at android.os.Handler.dispatchMessage(Handler.java:100) 
at android.os.Looper.loop(Looper.java:214) 
at android.app.ActivityThread.main(ActivityThread.java:7356) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
Any ideas on what is missing or what is wrong?

I know this has been a while, but I experienced this issue while moving from Twilio Chat to Twilio Conversation. How I fixed it was to wrap the method you are calling in a synchronization Status check.
Caused by: java.lang.IllegalStateException: Messages are not available at the moment. Synchronize the conversation first. is meaning conversation may be out of sync.
if (conversation?.synchronizationStatus?.isAtLeast(Conversation.SynchronizationStatus.ALL) == true) {
conversation?.setAllMessagesRead { value -> Timber.v("Unread Count:" + value) }
}
Here is twilio documentation about what do if your conversation is out of sync or what to do with the else statement.
https://www.twilio.com/docs/conversations/best-practices-sdk-clients#mobile-sdks-specifics

Related

Xamarin Android NoSuchMethodError

I have a Xamarin Android app live on the Play Store and am seeing a lot of NoSuchMethodError exceptions
java.lang.NoSuchMethodError: at
md5daa93411a9cc9943e09027d2340d0116.FixturesFragment.n_onResume
(Native Method) at
md5daa93411a9cc9943e09027d2340d0116.FixturesFragment.onResume
(FixturesFragment.java:48) at android.app.Fragment.performResume
(Fragment.java:2096) at android.app.FragmentManagerImpl.moveToState
(FragmentManager.java:928) at
android.app.FragmentManagerImpl.moveToState
(FragmentManager.java:1067) at android.app.BackStackRecord.run
(BackStackRecord.java:834) at
android.app.FragmentManagerImpl.execPendingActions
(FragmentManager.java:1462) at android.app.FragmentManagerImpl$1.run
(FragmentManager.java:447) at android.os.Handler.handleCallback
(Handler.java:739) at android.os.Handler.dispatchMessage
(Handler.java:95) at android.os.Looper.loop (Looper.java:159) at
android.app.ActivityThread.main (ActivityThread.java:5461) at
java.lang.reflect.Method.invoke (Native Method) at
java.lang.reflect.Method.invoke (Method.java:372) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:964) at com.android.internal.os.ZygoteInit.main
(ZygoteInit.java:759)
Does anyone know what the cause of these errors are? Do I have to add a crash reporter to get more detailed stack traces in Xamarin?

CORBA error org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 202 completed: No

We have developed Server-Client application using CORBA.
When client try to make a request to Server, we get below error message.
Jan 14, 2018 10:00:22 AM com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl writeLock
WARNING: "IOP00410202: (COMM_FAILURE) Connection close: rebind"
org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 202 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectionCloseRebind(Unknown Source)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.connectionCloseRebind(Unknown Source)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.writeLock(Unknown Source)
at com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendFragment(Unknown Source)
at com.sun.corba.se.impl.encoding.BufferManagerWriteStream.sendMessage(Unknown Source)
at com.sun.corba.se.impl.encoding.CDROutputObject.finishSendingMessage(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.finishSendingRequest(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete1(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(Unknown Source)
at org.omg.CORBA.portable.ObjectImpl._invoke(Unknown Source)
What we observed that, whenever client make continuous 5-6 requests, client gets the above error for particular 2-keys. Sometimes first 4 requests work correctly but get the error on last request. Or sometime gets the error on first request then remaining requests work correctly.
I have done enough search on google but did not find the solution.
I hope someone will help me here.
COMM_FAILURE means the underlying connection failed somehow. In your case, you're experiencing a premature close of the connection.
You reported only a warning message. Do you experienced an COMM_FAILURE exception in your code or are you seeing this only in log messages? In my guess this seems only a ORB internal log message and, if I'm right, it's not a problem at all.
In some very simple hello world code you could experience this when you execute the server without a orb.run() in your server, or even you're doing a System.exit while processing the invocation.
In other hand, I recommend you to use http://JacORB.org implementation instead of old and unsupported Sun implementation for CORBA (built-in the Oracle JVM). JacORB is a mature implementation and it's compliant to CORBA 3.0 spec.

Dataflow concurrency error with ValueState

The Beam 2.1 pipeline uses ValueState in a stateful DoFn. It runs fine with a single worker but when scaling is enabled will fail with "Unable to read value from state" and the root exception below. Any ideas what could cause this?
Caused by: java.util.concurrent.ExecutionException: com.google.cloud.dataflow.worker.KeyTokenInvalidException: Unable to fetch data due to token mismatch for key ��
at com.google.cloud.dataflow.worker.repackaged.com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:500)
at com.google.cloud.dataflow.worker.repackaged.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:459)
at com.google.cloud.dataflow.worker.repackaged.com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:76)
at com.google.cloud.dataflow.worker.repackaged.com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:62)
at com.google.cloud.dataflow.worker.WindmillStateReader$WrappedFuture.get(WindmillStateReader.java:309)
at com.google.cloud.dataflow.worker.WindmillStateInternals$WindmillValue.read(WindmillStateInternals.java:384)
... 16 more
Caused by: com.google.cloud.dataflow.worker.KeyTokenInvalidException: Unable to fetch data due to token mismatch for key ��
at com.google.cloud.dataflow.worker.WindmillStateReader.consumeResponse(WindmillStateReader.java:469)
at com.google.cloud.dataflow.worker.WindmillStateReader.startBatchAndBlock(WindmillStateReader.java:411)
at com.google.cloud.dataflow.worker.WindmillStateReader$WrappedFuture.get(WindmillStateReader.java:306)
... 17 more
I believe that exception should just be rethrown. It is thrown by the state mechanism to indicate that additional work on that key should not be performed, and will be automatically retried by the Dataflow runner.
These typically indicate that either that particular work should be performed on a different worker (thus proceeding wouldn't be helpful).
It may be possible that misusing state -- storing the state object from one key and attempting to use it on a different key -- could also lead to these errors. If that is the case, you may be able to see more diagnostic messages in either the worker or shuffler logs in Stackdriver logging.
If neither retrying nor looking at logging and how you use the state objects help, please provide a job ID demonstrating the problem.

Connecting to chromecast - a fatal developer error has occured

06-22 08:17:30.568 31107-31119/? E/CastService: [instance-4]
ICastDeviceControllerListener can't be null. 06-22 08:17:30.578
8284-8601/? E/EnterpriseContainerManager: ContainerPolicy Service is
not yet ready!!! 06-22 08:17:30.578 31107-31136/? E/Publisher:
ProcessDatabaseInternal start 06-22 08:17:30.578 32326-32326/?
E/ViewRootImpl: sendUserActionEvent() mView == null 06-22 08:17:30.588
32326-32326/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException:
A fatal developer error has occurred. Check the logs for further
information.
at com.google.android.gms.internal.jl$h.b(Unknown Source)
at com.google.android.gms.internal.jl$h.g(Unknown Source)
at com.google.android.gms.internal.jl$b.hy(Unknown Source)
at com.google.android.gms.internal.jl$a.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5283)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method) 06-22 08:17:30.919
8284-8333/? E/android.os.Debug: !#Dumpstate > dumpstate -k -t -z -d -o
/data/log/dumpstate_app_error 06-22 08:17:36.414 31107-31136/?
E/Publisher: ProcessDatabaseInternal start
I have this issue while connecting to chromecast. I've gone back to the previous code, and I still have the same issue, so something must have changed with chromecast. When I click my chromecast device to connect to "Sankey", this is when the crash occurs. Image below:
Research on this has pointed to a problem with the manifest, and not declaring the app_id properly. Below is my manifest file which shows this, and also the google play services version.
<meta-data android:name="com.google.android.gms.games.APP_ID"
android:value="#string/control_panel_app_id" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Here is the declarations in strings.xml with last 4 digits blocked out:
string name="control_panel_app_id" translatable="false">75468636XXXX
Checking the logs in vicinity of the crash has not given me any useful information.
My app was previously running cast SDK v1. I had two options to fix it: 1) wait approximately 3 months until google updated their gms code. 2) upgrade to cast v2.
I chose option 2.
Upgrading to cast v2 was done by the following:
change gradle files, so everything referencing any part of google play is version 11.0.0. ex: com.google.android.gms:play-services-games:11.0.0
required deleting references to "AppStateManager" in GameHelper.java (this is not necessary for cast, but was part of my project).
required changing minSdkVersion from 11 to 14 :(
in gradle file(s), update compileSdkVersion to 25, and buildToolsVersion to 25.0.2
Hope this helps someone out.
You may refer in this link. Make sure that you have it inside <application> tag. Also make sure that you are using the correct App ID. Here's how. Hope this helps!

JUnit - doesn't wait for completion of method under test

I am using Junit 4.x to test a method.
The method under the test is expected to throw an IllegalArgumentException. The method is a blocking method (synchronous) which internally makes a remote ssh connection executes a script and captures result, or throws exception.
To test this, I have written my JUnit test code as below.
#Test (timeout=3000, expected=IllegalArgumentException.class)
public final void testReadFolderWithInvalidFolder() {
final String folder = "/home/rv_nath/xxxyyyZzz";
rfc.readFolder(folder);
}
The testReadFolder() method above is supposed to wait upto 3 seconds (becoz of timeout=3000) before checking whether the expected exception is thrown or not). But it returns immediately, reporting that the test case has failed.
Can anyone help me figure out what is going wrong in the above. If more details required, let me know.
Here is the failure trace from Junit...
java.lang.AssertionError: Should have thrown IllegalArgumentException.
at org.junit.Assert.fail(Assert.java:91)
at com.comviva.remotefilebrowser.server.RemoteFileCaseTest.testReadFolderWithInvalidFolder(RemoteFileCaseTest.java:94)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.FailOnTimeout$1.run(FailOnTimeout.java:28)
Is there a bug in Junit4 timeout implementation, or am I missing something here?
Because, if I run the test case in debug mode (and trace through it, then it takes time to finish the remote execution, but it definitely works and the test case passes). The problem occurs only if I choose to run the test case, instead of debug it.
thanks and regards,
RV
Sorry for the above naive question. It was a problem with the way, I used JSch library routines for reading remote data.
Just posting here, so it may help novice users like me :)
The JSch library was throwing some exception, which I was not capturing properly. The called method was capturing the exception and was returning immediately. After the correction, it works correctly.

Resources