Wednesday, July 15, 2009

An unhandled exception has been thrown in the ESB system. The exception reported is: "java.io.IOException: Delete failed

When the following error occurs, it is possible to reset the oraesb schema in the database. The reset.sh is not recommended on a production system. First we had this problem on some development machines, we did a reset of the oraesb schema, this solved our issue.

But when we had this problem on production we first tried this:

Metalink note: 863024.1. The note describes another problem but it also helped us with the delete failed error.


[deployESBProjects] Deployment Attempt Response :
[deployESBProjects]
[deployESBProjects]
[deployESBProjects] An unhandled exception has been thrown in the ESB system. The exception reported is: "java.io.IOException: Delete failed
[deployESBProjects] at oracle.tip.esb.server.bootstrap.ESBBaseResourceAdapter.createIOException(ESBBaseResourceAdapter.java:630)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.ESBBaseResourceAdapter.access$200(ESBBaseResourceAdapter.java:130)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.ESBBaseResourceAdapter$2.delete(ESBBaseResourceAdapter.java:550)
[deployESBProjects] at oracle.tip.esb.lifecycle.AuxiliaryFileHandler.deleteProject(AuxiliaryFileHandler.java:555)
[deployESBProjects] at oracle.tip.esb.console.XMLConsoleManagerImpl.cleanSlideRepositoryForProject(XMLConsoleManagerImpl.java:2364)
[deployESBProjects] at oracle.tip.esb.console.XMLConsoleManagerImpl.commit(XMLConsoleManagerImpl.java:2405)
[deployESBProjects] at oracle.tip.esb.configuration.deployment.JDevDeploymentManager.deploy(JDevDeploymentManager.java:226)
[deployESBProjects] at oracle.tip.esb.configuration.deployment.DeploymentServlet.doPost(DeploymentServlet.java:120)
[deployESBProjects] at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
[deployESBProjects] at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
[deployESBProjects] at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)
[deployESBProjects] at oracle.security.jazn.oc4j.JAZNFilter$1.run(JAZNFilter.java:400)
[deployESBProjects] at java.security.AccessController.doPrivileged(Native Method)
[deployESBProjects] at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
[deployESBProjects] at oracle.security.jazn.oc4j.JAZNFilter.doFilter(JAZNFilter.java:414)
[deployESBProjects] at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:623)
[deployESBProjects] at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:370)
[deployESBProjects] at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871)
[deployESBProjects] at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453)
[deployESBProjects] at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:313)
[deployESBProjects] at com.evermind.server.http.AJPRequestHandler.run(AJPRequestHandler.java:199)
[deployESBProjects] at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)
[deployESBProjects] at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:234)
[deployESBProjects] at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:29)
[deployESBProjects] at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:879)
[deployESBProjects] at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
[deployESBProjects] at java.lang.Thread.run(Thread.java:595)
[deployESBProjects] Caused by: Service org.apache.slide.store.impl.rdbms.J2EEStore@1966d52 access error : ORA-02292: integrity constraint (ORAESB.SYS_C005694) violated - child record found


[deployESBProjects] at org.apache.slide.macro.MacroImpl.delete(MacroImpl.java:522)
[deployESBProjects] at org.apache.slide.macro.MacroImpl.delete(MacroImpl.java:482)
[deployESBProjects] at org.apache.slide.macro.MacroImpl.delete(MacroImpl.java:463)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.slide.DeleteFolder.delete(DeleteFolder.java:76)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.slide.DeleteFolder.executeRequest(DeleteFolder.java:58)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.slide.AbstractSlideMethod.execute(AbstractSlideMethod.java:142)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.slide.SlideHandler.delete(SlideHandler.java:153)
[deployESBProjects] at oracle.tip.esb.server.bootstrap.ESBBaseResourceAdapter$2.delete(ESBBaseResourceAdapter.java:548)
[deployESBProjects] ... 24 more
[deployESBProjects] ".

[deployESBProjects]
[deployESBProjects]

[deployESBProjects]
[deployESBProjects]





Two timers need to be extended in order to make the registration successful. It is assumed here that the HTTP server being used is the Oracle HTTP Server.

(1) At the HTTP Server that is hosting the ESB Designtime container edit the following file:

$ORACLE_HOME/Apache/Apache/conf/httpd.conf

(2) Change the value of "Timeout" to a higher value, e.g. from:

Timeout 300

to:

Timeout 3600

A value of 3600 (seconds) is high enough to cover most cases, but it could be possible that a higher value may be needed.

(3) Restart the HTTP server to make the change affective.

(4) At the ESB Designtime container edit the following file:

$ORACLE_HOME/j2ee//config/transaction-manager.xml

(5) Change the value or transaction-timeout to a higher value, e.g. from:

transaction-timeout="30"

to:

transaction-timeout="3600"
In most cases this timeout should match that of the value set at the HTTP Server.

(6) Restart the SOA server or ESB Designtime container to make the change affective.

(7) Retry the large ESB project registration.


If this solution does not work you can try the reset.sh.

Before executing the command read the whole post!!!!! Otherwise your ESB can be corrupted.

With the following command you can clean up your oraesb schema:

cd $ORACLE_HOME/integration/esb/bin
./reset.sh -DDB_URL=jdbc:oracle:thin:@//db_host:db_port/sid -DDB_USER=oraesb -DDB_PASSWORD=oraesb


WATCH OUT when using this on SOA 10.1.3.4 MLR 8

It looks like the database schema of oraesb is corrupted after the reset.sh script. In our case the ESB deployments failed after this. I ran the sql script form the latest patch again and now everything seems fine.

During deployment this error can occur:


[deployESBProjects] Deployment Attempt Response :
[deployESBProjects]
[deployESBProjects] Entity Deployment Failed
[deployESBProjects]
[deployESBProjects]
[deployESBProjects] Failed to create Service "ProcesServic e".
[deployESBProjects] Ensure that the (a) Repository is available. ( b) The Connection information for the Repository is Valid. Verify the detailed c ause of error if available. Contact Oracle Support if error not fixable.
[deployESBProjects]

[deployESBProjects]

[deployESBProjects]



There is also another problem the BPELSystem in the ESB is gone.
Did this post help you in any way can you please leave a comment? This will motivate me writing more posts.

2 comments:

  1. Hi Arjan,

    Thanks for this wonderful post.
    I need your help as I am facing " Ensure that the (a) Repository is available
    b) The Connection information for the Repository is Valid." issue. Can you suggest what to do? Will it get resolve if I recreate the oraesb schema?

    ReplyDelete
  2. This blog shows the vast knowledge Mr. Arjan has on Oracle Database, Linux, application server etc. This particular program is very useful.
    sap support packs

    ReplyDelete

comment