waitAction in TouchAction throws an exception (Android)

Hi,

i’m trying to implement drag n’ drop sort of thing (actually using drag and drop to simulate longpress and then a slide).

Device: Android real device (Samsung Galaxy Note 4)
Appium Server: 1.4.10
Java Client: 3.1.0

my code which is doing the action is:

	TouchAction action = new TouchAction(driver);
	action.longPress(micBtn, holdForSeconds * 1000)
		  .moveTo(slideToCancel)
		  .waitAction(3000)
		  .release()
		  .perform();

now if i remove the waitAction, it works but its too fast and it totally ignores the duration param in the longPress action.
if adding waitAction to anywhere between those actions, it will throw the following nasty exception:

org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9.32 seconds
Build info: version: ‘2.47.1’, revision: ‘unknown’, time: ‘2015-07-30 11:02:44’
System info: host: ‘talkspace-rv’, ip: ‘192.168.2.109’, os.name: ‘Windows 8.1’, os.arch: ‘amd64’, os.version: ‘6.3’, java.version: ‘1.7.0_79’
Session ID: c575d9f5-8335-4a12-b9ed-b7f47ed244ea
Driver info: io.appium.java_client.android.AndroidDriver
Capabilities [{platform=LINUX, app=C:\dev\talkspace-automation\apk\app-debug.apk, javascriptEnabled=true, appActivity=com.talkspace.talkspaceapp.ui.activities.WelcomeActivity, browserName=, autoLaunch=false, networkConnectionEnabled=true, desired={newCommandTimeout=300, app=C:\dev\talkspace-automation\apk\app-debug.apk, deviceName=null, platformName=Android, appActivity=com.talkspace.talkspaceapp.ui.activities.WelcomeActivity, browserName=, autoLaunch=false, appPackage=com.talkspace.talkspaceapp, version=5.0}, locationContextEnabled=false, appPackage=com.talkspace.talkspaceapp, version=5.0, newCommandTimeout=300, platformVersion=5.0.1, databaseEnabled=false, deviceName=a53fc451, platformName=Android, webStorageEnabled=false, warnings={}, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:595)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:27)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at io.appium.java_client.AppiumDriver.performTouchAction(AppiumDriver.java:380)
at io.appium.java_client.TouchAction.perform(TouchAction.java:302)
at com.talkspace.auto.android.customer.objects.ChatPage.tapMicAndCancel(ChatPage.java:224)
at com.talkspace.auto.regression.android.tests.AndroidCommonTest.cancelAudioMessage(AndroidCommonTest.java:393)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:47)
at org.junit.rules.RunRules.evaluate(RunRules.java:18)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:47)
at org.junit.rules.RunRules.evaluate(RunRules.java:18)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

any ideas whats wrong?

thanks,
Roy.