2017-08-24 1 views
0

Ich arbeite mit Wildfly XADataSources (zwei). Einer zeigt auf einen PostgreSQL DB (A) und der andere auf einen readonly DB (B). Der nächste Fehler wird angezeigt, wenn ein Ich versuche, von B zu lesen und schreiben, auf A:Postgresql XA Transaction Exception

Unterdrückte: org.postgresql.xa.PGXAException: Fehler Transaktion Vorbereitung

ich die bereits gesetzt max_prepared_transactions auf einen Wert ungleich Null, wie die Dokumentation suggeriert.

Irgendwelche Vorschläge?

komplette Stack-Trace:

or call us at: (101) 848-5866 x and include Incident #: techcr-lpd1281-300653: javax.transaction.HeuristicMixedException 
     at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1208) 
     at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:126) 
     at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:89) 
     at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:178) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.jboss.weld.util.reflection.Reflections.invokeAndUnwrap(Reflections.java:433) 
     at org.jboss.weld.bean.builtin.CallableMethodHandler.invoke(CallableMethodHandler.java:42) 
     at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56) 
     at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:100) 
     at org.jboss.weldx.transaction.UserTransaction$112420245$Proxy$_$$_Weld$Proxy$.commit(Unknown Source) 
     at com.snap.common.utils.TransactionUtil.commit(TransactionUtil.java:71) 
     at com.snap.web.bean.application.SearchApplicationTransactionTests.smart_aroundBody4(SearchApplicationTransactionTests.java:339) 
     at com.snap.web.bean.application.SearchApplicationTransactionTests$AjcClosure5.run(SearchApplicationTransactionTests.java:1) 
     at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:149) 
     at com.snap.common.log.MethodLogger.around(MethodLogger.java:62) 
     at com.snap.web.bean.application.SearchApplicationTransactionTests.smart(SearchApplicationTransactionTests.java:287) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:181) 
     at com.sun.el.parser.AstValue.invoke(AstValue.java:289) 
     at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) 
     at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) 
     at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) 
     at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) 
     at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) 
     at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
     at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) 
     at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
     at javax.faces.component.UICommand.broadcast(UICommand.java:315) 
     at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
     at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
     at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) 
     at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
     at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) 
     at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:100) 
     at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 
     at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
     at io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:130) 
     at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 
     at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:162) 
     at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 
     at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
     at com.ocpsoft.pretty.PrettyFilter.doFilter(PrettyFilter.java:145) 
     at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 
     at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:201) 
     at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:178) 
     at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) 
     at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) 
     at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) 
     at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 
     at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) 
     at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) 
     at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53) 
     at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) 
     at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) 
     at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:59) 
     at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) 
     at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) 
     at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) 
     at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) 
     at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292) 
     at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81) 
     at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138) 
     at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135) 
     at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) 
     at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) 
     at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
     at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
     at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
     at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
     at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
     at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
     at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272) 
     at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) 
     at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104) 
     at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202) 
     at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:805) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:748) 
     Suppressed: org.postgresql.xa.PGXAException: Error preparing transaction 
       at org.postgresql.xa.PGXAConnection.prepare(PGXAConnection.java:323) 
       at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.prepare(XAManagedConnection.java:330) 
       at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelPrepare(XAResourceRecord.java:218) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2662) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2612) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.prepare(BasicAction.java:2155) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1501) 
       at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:96) 
       at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162) 
       at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1200) 
       ... 97 more 
     Caused by: org.postgresql.util.PSQLException: ERROR: cannot execute PREPARE TRANSACTION during recovery 
       at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2412) 
       at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2125) 
       at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:297) 
       at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428) 
       at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354) 
       at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:301) 
       at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:287) 
       at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:264) 
       at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:244) 
       at org.postgresql.xa.PGXAConnection.prepare(PGXAConnection.java:315) 
       ... 106 more 
     Suppressed: org.postgresql.xa.PGXAException: Error rolling back prepared transaction 
       at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:415) 
       at org.jboss.jca.adapters.jdbc.xa.XAManagedConnection.rollback(XAManagedConnection.java:346) 
       at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:369) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3017) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:2996) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Abort(BasicAction.java:1979) 
       at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1517) 
       at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:96) 
       at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162) 
       at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1200) 
       ... 97 more 
     Caused by: org.postgresql.util.PSQLException: ERROR: cannot execute ROLLBACK PREPARED during recovery 
       at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2412) 
       at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2125) 
       at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:297) 
       at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:428) 
       at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:354) 
       at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:301) 
       at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:287) 
       at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:264) 
       at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:244) 
       at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:405) 
       ... 106 more 

Antwort

0

... Nur-Lese-DB (B). ... Fehler ... Versuch, ... auf B. zu schreiben ... Irgendwelche Vorschläge?

umm, versuchen Sie nicht, eine schreibgeschützte Datenbank zu schreiben?

Habe ich recht damit zu denken, dass Sie gegen einen HA-Slave laufen? "VORBEREITEN VON TRANSAKTIONEN während der Wiederherstellung nicht ausführen" ist normalerweise ein Symptom dafür, dass versucht wird, Mutationen an ein Replikat anstelle des Masters zu senden. Die Nachricht ist ein wenig verwirrend, weil die Slaves grundsätzlich das Statusprotokoll des Masters kontinuierlich "wiederherstellen", um sich selbst auf dem neuesten Stand zu halten und sie so effektiv schreibgeschützt zu machen.

+0

Sorry, ich habe einen Fehler gemacht, ich lese von B und versuche auf A zu schreiben. Du hast Recht. B ist eine Replik. – juapeqf

+0

pgsql scheint diesen Fall nicht richtig zu optimieren. Es sollte "XA_RDONLY" von der Vorbereitungs- zur Nur-Lese-Kopie zurückgeben, da es auf dieser Seite keine Mutation durchführen muss und daher nicht interessiert, dass es nicht in der Lage ist, aber es unterscheidet diesen Fall nicht der allgemeinere. Tragen Sie stattdessen die schreibgeschützte als Nicht-Xa-Datenquelle ein? – jbosstxnerd

+0

Danke @jbosstxnerd, ich schätze Ihren Vorschlag. – juapeqf