[ https://issues.apache.org/jira/browse/LOG4J2-2715?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gary D. Gregory resolved LOG4J2-2715. ------------------------------------- Fix Version/s: 2.17.2 Resolution: Fixed I updated the site documentation but the changes will only appear when the next release is published. > JDBCAppender commits to the DB a JTA RollbackOnly transaction and causes DB > inconsistency > ----------------------------------------------------------------------------------------- > > Key: LOG4J2-2715 > URL: https://issues.apache.org/jira/browse/LOG4J2-2715 > Project: Log4j 2 > Issue Type: Bug > Components: Appenders, JDBC > Affects Versions: 2.9.1, 2.12.1 > Environment: Container Payara 5.183, > Application: EAR using EJB 3, Hibernate 5.3.6-FINAL > JDBC Driver: Oracle Driver ojdbc8 > Reporter: David Obber > Priority: Critical > Fix For: 2.17.2 > > > I'm using log4j2 in a Payara 5.183 server and I've enabled a JDBC Appender > connected to a JNDI datasource. > <JDBC name="DBAppender" tableName="LOG_TABLE"> > <DataSource jndiName="myJNDI"></DataSource> > <Column ..." /> > <Column ..." /> > </JDBC> > The same datasource is used by the application to talk with the db. If the > application, that uses EJB3, marks the transaction to be rolled back > (sessionContext.setRollbackOnly()), each statement sent to the database > (flush(), executeUpdate()) inside the transaction must not be committed. > What happens is that using the *jdbc appender* causes a commit that > *{color:#de350b}writes to the database everything{color}*, *causing database > inconsistency*. > Using DriverManager instead of a JNDI works fine, but I don't know if I can > set a connection pool with it. > > When log4j is inside a JTA transaction it should use another JDBC connection > to log. > > > > > -- This message was sent by Atlassian Jira (v8.20.1#820001)