cancel
Showing results for 
Search instead for 
Did you mean: 
cancel

CVP8.0.1 halt while setting "Calendar" object into sessionData

40
Views
0
Helpful
0
Comments

Subject: RE: New Message from Bing Su in Customer Voice Portal (CVP) - General Discu
Replied by: GEOFFREY THOMPSON on 22-10-2011 06:02:17 PM
I have never used the debugger. I see no use for it.

Write a good test class first to test your work, then fit it into the application with sensible use of the Audium logging mechanism (not System.out.println) and examine the logs. I¿ve been doing it this way for 7 years and have written some large and complex applications. The other advantage of this approach is when you do get an error in production, your well-designed logging will help you find the error.

Regards,
Geoff
This document was generated from CDN thread

Created by: Bing Su on 22-10-2011 04:29:26 PM
I got some issues while using CVP8.0.1 (Build id: 201005191937).
in one of my tests, I was trying to set Sessiondata using custom java api.
 
here are parts of my code in doAction:
 
        try {
actionData.setSessionData("sss2",Calendar.getInstance());
        }
        catch (AudiumException e)
        {
System.out.println("got exception while setting sessiondata");
        }
 
the sessionData was able to be set because I can retrieve it using :
actionData.getSessionData("sss2").
 
but after doAction return to CVP server API, system just halt, no response yet.
 
if I change the code, seting the sessiondata with a string, in, or Date type, there are no issues at all.
 
---------------------------------------------------------------------------------------------------------------------------------------
actionData.setSessionData("sss2",Calendar.getInstance());                         ----------------> system halt after doAction return
actionData.setSessionData("sss2","12345678");                                         -------> no issues
actionData.setSessionData("sss2",100);                                                   ---------> no issues
actionData.setSessionData("sss2",new Date());                                          ---------> no issues
 
using thread dump tool, it shows that system halts at: Object.wait()
 
can anybody help please?
thanks!
 
attached is the screenshot when system halts


 
 

Subject: RE: New Message from Bing Su in Customer Voice Portal (CVP) - General Discu
Replied by: GEOFFREY THOMPSON on 22-10-2011 05:21:17 PM
Does it play up if you do it in two steps?

Calendar now = Calendar.getInstance();
try
{
actionData.setSessionData("sss2", now);
}
catch (AudiumException e)
{
System.out.println("got exception while setting sessiondata");
}

Regards,
Geoff

Subject: RE: CVP8.0.1 halt while setting "Calendar" object into sessionData
Replied by: Bing Su on 22-10-2011 05:31:51 PM
Thanks for update, Geoffrey.
I tried to using two steps. got the same issue.
if change the code to set Date object, without any issues.

in activity logs, it shows, "disconnect",
but in call studio debugger, it just halts.

here are from activity logs:
.....
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:36.984,Audio_03,enter,
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.015,Audio_03,interaction,audio_group,initial_audio_group
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.062,Audio_03,exit,done
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.062,Audio_02,enter,
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.062,Audio_02,exit,done
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.109,,end,how,disconnect
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.109,,end,result,normal
192.168.1.70.1319317235890.0.test7_advansamp,10/22/2011 14:00:37.109,,end,duration,1

but in call studio debugger, it just halts, (scr1.jpeg)
---------------------------------------
in scr2.jpeg, we could see that custom java api returned, settion data able to retrieve from java API.
since then, control back to CVP server.
 

Subject: RE: CVP8.0.1 halt while setting "Calendar" object into sessionData
Replied by: Bing Su on 22-10-2011 05:34:45 PM
here is thread dump while debugger not returned.
it shows code not in my custom java code, already returned to CVP server.
 
----------------------------------------------------------------
RMI TCP Connection(21)-192.168.19.1:
  [1] java.net.SocketInputStream.socketRead0 (native method)
  [2] java.net.SocketInputStream.read (SocketInputStream.java:129)
  [3] java.io.BufferedInputStream.fill (BufferedInputStream.java:218)
  [4] java.io.BufferedInputStream.read (BufferedInputStream.java:235)
  [5] java.io.FilterInputStream.read (FilterInputStream.java:66)
  [6] sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:448)
  [7] sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run (TCPTransport.jav
a:707)
  [8] java.lang.Thread.run (Thread.java:595)
RMI TCP Connection(20)-192.168.19.1:
  [1] java.net.SocketInputStream.socketRead0 (native method)
  [2] java.net.SocketInputStream.read (SocketInputStream.java:129)
  [3] java.io.BufferedInputStream.fill (BufferedInputStream.java:218)
  [4] java.io.BufferedInputStream.read (BufferedInputStream.java:235)
  [5] java.io.FilterInputStream.read (FilterInputStream.java:66)
  [6] sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:448)
  [7] sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run (TCPTransport.jav
a:707)
  [8] java.lang.Thread.run (Thread.java:595)
RMI TCP Connection(6)-192.168.19.1:
  [1] java.lang.Object.wait (native method)
  [2] com.sun.jmx.remote.internal.ArrayNotificationBuffer.fetchNotifications (Ar
rayNotificationBuffer.java:344)
  [3] com.sun.jmx.remote.internal.ArrayNotificationBuffer$ShareBuffer.fetchNotif
ications (ArrayNotificationBuffer.java:122)
  [4] com.sun.jmx.remote.internal.ServerNotifForwarder.fetchNotifs (ServerNotifF
orwarder.java:169)
  [5] javax.management.remote.rmi.RMIConnectionImpl.fetchNotifications (RMIConne
ctionImpl.java:1,215)
  [6] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
  [7] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java
:39)
  [8] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorI
mpl.java:25)
  [9] java.lang.reflect.Method.invoke (Method.java:585)
  [10] sun.rmi.server.UnicastServerRef.dispatch (UnicastServerRef.java:294)
  [11] sun.rmi.transport.Transport$1.run (Transport.java:153)
  [12] java.security.AccessController.doPrivileged (native method)
  [13] sun.rmi.transport.Transport.serviceCall (Transport.java:149)
  [14] sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:466)

  [15] sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run (TCPTransport.ja
va:707)
  [16] java.lang.Thread.run (Thread.java:595)
JMX server connection timeout 37:
  [1] java.lang.Object.wait (native method)
  [2] com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run (ServerCom
municatorAdmin.java:150)
  [3] java.lang.Thread.run (Thread.java:595)
http-60543-Monitor:
  [1] java.lang.Object.wait (native method)
  [2] org.apache.tomcat.util.threads.ThreadPool$MonitorRunnable.run (ThreadPool.
java:560)
  [3] java.lang.Thread.run (Thread.java:595)
http-60543-Processor4:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.
java:657)
  [4] java.lang.Thread.run (Thread.java:595)
http-60543-Processor3:
  [1] java.net.PlainSocketImpl.socketAccept (native method)
  [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:384)
  [3] java.net.ServerSocket.implAccept (ServerSocket.java:450)
  [4] java.net.ServerSocket.accept (ServerSocket.java:421)
  [5] org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket (Defaul
tServerSocketFactory.java:61)
  [6] org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket (PoolTcpEndpoint.j
ava:408)
  [7] org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowe
rWorkerThread.java:71)
  [8] org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.
java:685)
  [9] java.lang.Thread.run (Thread.java:595)
http-60543-Processor2:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.
java:657)
  [4] java.lang.Thread.run (Thread.java:595)
http-60543-Processor1:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run (ThreadPool.
java:657)
  [4] java.lang.Thread.run (Thread.java:595)
ContainerBackgroundProcessor[StandardEngine]:
  [1] java.lang.Thread.sleep (native method)
  [2] org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run (C
ontainerBase.java:1,548)
  [3] java.lang.Thread.run (Thread.java:595)
Timer-1:
  [1] java.lang.Object.wait (native method)
  [2] java.util.TimerThread.mainLoop (Timer.java:509)
  [3] java.util.TimerThread.run (Timer.java:462)
Cisco Unified CVP VXML Server: Logger Manager:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] com.audium.server.logger.LoggerManager.run (LoggerManager.java:167)
  [4] java.lang.Thread.run (Thread.java:595)
Cisco Unified CVP VXML Server: License Manager:
  [1] java.net.PlainSocketImpl.socketAccept (native method)
  [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:384)
  [3] java.net.ServerSocket.implAccept (ServerSocket.java:450)
  [4] java.net.ServerSocket.accept (ServerSocket.java:421)
  [5] com.audium.server.licensing.LicenseManager.run (LicenseManager.java:219)
  [6] java.lang.Thread.run (Thread.java:595)
Log Purge Timer:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] java.util.TimerThread.mainLoop (Timer.java:483)
  [4] java.util.TimerThread.run (Timer.java:462)
JMX server connection timeout 23:
  [1] java.lang.Object.wait (native method)
  [2] com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run (ServerCom
municatorAdmin.java:150)
  [3] java.lang.Thread.run (Thread.java:595)
RMI LeaseChecker:
  [1] java.lang.Thread.sleep (native method)
  [2] sun.rmi.transport.DGCImpl$LeaseChecker.run (DGCImpl.java:310)
  [3] java.lang.Thread.run (Thread.java:595)
RMI RenewClean-[192.168.19.1:1184]:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:116)
  [3] sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run (DGCClient.
java:501)
  [4] java.lang.Thread.run (Thread.java:595)
GC Daemon:
  [1] java.lang.Object.wait (native method)
  [2] sun.misc.GC$Daemon.run (GC.java:100)
RMI Reaper:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:116)
  [3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:132)
  [4] sun.rmi.transport.ObjectTable$Reaper.run (ObjectTable.java:336)
  [5] java.lang.Thread.run (Thread.java:595)
RMI TCP Accept-8099:
  [1] java.net.PlainSocketImpl.socketAccept (native method)
  [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:384)
  [3] java.net.ServerSocket.implAccept (ServerSocket.java:450)
  [4] java.net.ServerSocket.accept (ServerSocket.java:421)
  [5] sun.rmi.transport.tcp.TCPTransport.run (TCPTransport.java:340)
  [6] java.lang.Thread.run (Thread.java:595)
RMI TCP Accept-0:
  [1] java.net.PlainSocketImpl.socketAccept (native method)
  [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:384)
  [3] java.net.ServerSocket.implAccept (ServerSocket.java:450)
  [4] java.net.ServerSocket.accept (ServerSocket.java:421)
  [5] sun.rmi.transport.tcp.TCPTransport.run (TCPTransport.java:340)
  [6] java.lang.Thread.run (Thread.java:595)
Timer-0:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] java.util.TimerThread.mainLoop (Timer.java:483)
  [4] java.util.TimerThread.run (Timer.java:462)
Signal Dispatcher:
Finalizer:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:116)
  [3] java.lang.ref.ReferenceQueue.remove (ReferenceQueue.java:132)
  [4] java.lang.ref.Finalizer$FinalizerThread.run (Finalizer.java:159)
Reference Handler:
  [1] java.lang.Object.wait (native method)
  [2] java.lang.Object.wait (Object.java:474)
  [3] java.lang.ref.Reference$ReferenceHandler.run (Reference.java:116)
main:
  [1] java.net.PlainSocketImpl.socketAccept (native method)
  [2] java.net.PlainSocketImpl.accept (PlainSocketImpl.java:384)
  [3] java.net.ServerSocket.implAccept (ServerSocket.java:450)
  [4] java.net.ServerSocket.accept (ServerSocket.java:421)
  [5] org.apache.catalina.core.StandardServer.await (StandardServer.java:379)
  [6] org.apache.catalina.startup.Catalina.await (Catalina.java:616)
  [7] org.apache.catalina.startup.Catalina.start (Catalina.java:576)
  [8] sun.reflect.NativeMethodAccessorImpl.invoke0 (native method)
  [9] sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java
:39)
  [10] sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessor
Impl.java:25)
  [11] java.lang.reflect.Method.invoke (Method.java:585)
  [12] org.apache.catalina.startup.Bootstrap.start (Bootstrap.java:295)
  [13] org.apache.catalina.startup.Bootstrap.main (Bootstrap.java:433)
>

Subject: RE: New Message from Bing Su in Customer Voice Portal (CVP) - General Discu
Replied by: GEOFFREY THOMPSON on 22-10-2011 05:45:17 PM
Try this instead

Calendar now = new GregorianCalendar();
try
{
actionData.setSessionData("sss2", now);
}
catch (AudiumException e)
{
System.out.println("got exception while setting sessiondata");
}


Regards,
Geoff

Subject: RE: CVP8.0.1 halt while setting "Calendar" object into sessionData
Replied by: Bing Su on 22-10-2011 05:56:42 PM
I tried, got the same issue.
thanks!
 
I guess the problem is in voice browser debugger.
since in vxml output I already see CVP server returned those session data.
but when debugger tried to print those information. it just hung.
 
 
-----------------------------------------------
 
   <block>
      <prompt bargein="true">here is :java.util.GregorianCalendar[time=1319320171531,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Los_Angeles",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=9,WEEK_OF_YEAR=43,WEEK_OF_MONTH=4,DAY_OF_MONTH=22,DAY_OF_YEAR=295,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,HOUR_OF_DAY=14,MINUTE=49,SECOND=31,MILLISECOND=531,ZONE_OFFSET=-28800000,DST_OFFSET=3600000]</prompt>
      <assign name="audium_vxmlLog" expr="audium_vxmlLog + '|||audio_group$$$' + 'initial_audio_group' + '^^^' + application.getElapsedTime(audium_element_start_time_millisecs)" />
      <submit next="/CVP/Server" method="post" namelist="audium_vxmlLog" />
    </block>
  </form>
</vxml>
 

Subject: RE: New Message from Bing Su in Customer Voice Portal (CVP) - General Discu
Replied by: Bing Su on 22-10-2011 06:21:07 PM
thanks , Geoff.
------------
 
it seems the problem is in debugger itself.
 
if "sss2" if a session data and voice browser debugger tried to play the audio as TTS, then it would hang there.
 
(1) here is my previous audio TTS string:
    {Data.Session.sss2}
    in this case, if ss2 is "Date" or "int" or "String", debugger would not have any issues.
    but if sss2 is "Calendar",, then debugger hangs while it is trying to "print" sss2 in debugger window.
 
(2) I changed my code, using saysmart plugin to play this "Calendar" object.
    then debuggger can return without any issue
 
here is output after I used saysmart plugin (it plays today's date Calendar object as "October twenty second two thousand eleven")

Prompt: here is :
Prompt: october twenty second two thousand eleven
 
here is the code I used saysmart instead of session data iteslf.
 
-----------------------------------
CreatePlease to create content