Author Message
ZeynepOtenoglu
Joined: Jan 10, 2014
Messages: 49
Offline
Hello
Can you please explain what "com.avaya.sce.runtimecommon.SCESession.createDirectoryStructure" method does? It seems to be causing stuck threads on weblogic 10.3 on Java IO classes:

at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.exists(File.java:813)

Thank you,
RossYakulis
Joined: Nov 6, 2013
Messages: 2652
Offline
There was a change added to 6.0 sp3 that should address this. What version of OD are you using?
ZeynepOtenoglu
Joined: Jan 10, 2014
Messages: 49
Offline
Hello,
We developed the application with AOD 7.0.1 and our scert version on weblogig server is scertcommon-07.01.08.04.jar.

The full stack trace for stuck thread is as following. The node in our application on which the stuck thread occurs does not do any file operations so an internal Avaya process does it. May this be about attempting to write to trace.log file?

"[STUCK] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x0cec0400 nid=0x3c15 runnable [0x0a155000]
java.lang.Thread.State: RUNNABLE
at java.io.UnixFileSystem.getBooleanAttributes0(Native Method)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242)
at java.io.File.exists(File.java:813)
at com.avaya.sce.runtimecommon.SCESession.createDirectoryStructure(SCESession.java:2246)
at com.avaya.sce.runtimecommon.SCESession.createDirectoryStructure(SCESession.java:2252)
at com.avaya.sce.runtimecommon.SCESession.createDirectoryStructure(SCESession.java:2252)
at com.avaya.sce.runtimecommon.SCESession.createDirectoryStructure(SCESession.java:2252)
at com.avaya.sce.runtimecommon.SCESession.getAbsoluteTempDirPath(SCESession.java:1219)
at com.avaya.sce.runtime.SCEServlet.storeVariables(SCEServlet.java:1230)
at com.avaya.sce.runtime.SCEServlet.processRequest(SCEServlet.java:484)
at com.avaya.sce.runtime.AppDocument.processRequest(AppDocument.java:188)
at com.avaya.sce.runtime.SCEServlet.requestHandler(SCEServlet.java:285)
at com.avaya.sce.runtime.SCEServlet.doPost(SCEServlet.java:190)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3732)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3696)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2273)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2179)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1490)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
RossYakulis
Joined: Nov 6, 2013
Messages: 2652
Offline
See the posts below:

http://stackoverflow.com/questions/3833127/alternative-to-file-exists-in-java

http://stackoverflow.com/questions/224756/java-application-hang-on-linux-at-java-io-unixfilesystem-getbooleanattributes0/224864#224864


Can you work around this by making sure that the directories

<myapp>/data/log
<myapp>/data/temp
ZeynepOtenoglu
Joined: Jan 10, 2014
Messages: 49
Offline
Hello,
I could not understand the last part of your post:
"Can you work around this by making sure that the directories

<myapp>/data/log
<myapp>/data/temp"

Besides as I explained our application does not do any explicit file operations in the DD nodes that causes the stuck threads. It is the "com.avaya.sce.runtimecommon.SCESession.createDirectoryStructure" method that makes the java.io calls that results in stuck threads. I believe Avaya is doing an internal file operation and we try to understand what this operation may be. That's why I asked can this be caused by an attemp to write to trace.log?

The links you shared points to a java bug for nfs disk structures and if there's a workaround for that bug it must be fixed within the SCESession.createDirectoryStructure method by Avaya.
RossYakulis
Joined: Nov 6, 2013
Messages: 2652
Offline
After the application is deployed make sure the data/log and data/temp exist. When a recording is posted to back to the application the recording is stored in data/temp and the url to that is placed in the OD variable.
RossYakulis
Joined: Nov 6, 2013
Messages: 2652
Offline
You can also use the runtimeconfig web application / Application configuration to alter the location of the temp directory.

Also from the release notes:

25. To deploy packed war files (vs expanded directory) on WebLogic, a directory is needed for writing
application logs and recording files. By default, OD will create a directory with the application
name in the OS's root ("C:/" for windows and "/" for Linux), and the log files and recording files
will be written to the data/logs and data/temp directories respectively. Alternatively, you can set a
specific directory by using the system property avaya.dd.temp.dir. This is where a sub-directory is
created for each application. For example:
-Davaya.dd.tempdir=c:\temp or some other value.
In either case (default or tempdir), OD assumes that it can create directories and files in that
location. If directory create is disabled, then you must create a subdirectory for each OD web
application deployed with sub directories temp and data/log. When recording, temp recording files
will be placed in temp and if tracing is enabled the trace.log and report.log will be in data/log. If
you have a deployed application named Simple, under c:\temp you would see: c:\temp\Simple\temp
and \data\log.
If the avaya.dd.tempdir is not writable then recording will not work, nor will tracing and local
reporting. The avaya.dd.tempdir can also be used with non-packed war files as well, thus providing
a mechanism to move the temp and log files out of the web application to a separate area.
Lastly when altering the location of the temporary directories,, the URL returned for the recorded
file will be in the file:// protocol format and is NOT directly usable in a prompt to replay the
recording since the file URL is not accessible on the platform where the voice browser is
executing. To replay the message you will need to write java code to move the file from the temp
location to a web context and reference the file there using the http protocol.

Go to:   
Mobile view