[ 
https://issues.apache.org/jira/browse/LOG4NET-531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15650826#comment-15650826
 ] 

Vladimir Vedeneev commented on LOG4NET-531:
-------------------------------------------

[~joe] I don't know log4net sources well, so if you feel that any "valid" call 
to Append is covered by try / catch, then please feel free to close the bug.

> AdoNetAppender crashes application if BeginDbTransaction failed
> ---------------------------------------------------------------
>
>                 Key: LOG4NET-531
>                 URL: https://issues.apache.org/jira/browse/LOG4NET-531
>             Project: Log4net
>          Issue Type: Bug
>          Components: Appenders
>    Affects Versions: 1.2.15
>         Environment: Windows Server 2012 R2 Datacenter, SQL Azure, Windows 
> Service
>            Reporter: Vladimir Vedeneev
>            Priority: Critical
>
> AdoNetAppender crashed the process due to failed BeginDbTransaction:
> {noformat}
> Framework Version: v4.0.30319
> Description: The process was terminated due to an unhandled exception.
> Exception Info: System.Data.SqlClient.SqlException
>    at 
> System.Data.SqlClient.SqlConnection.OnError(System.Data.SqlClient.SqlException,
>  Boolean, System.Action`1<System.Action>)
>    at 
> System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(System.Data.SqlClient.TdsParserStateObject,
>  Boolean, Boolean)
>    at 
> System.Data.SqlClient.TdsParserStateObject.SNIWritePacket(System.Data.SqlClient.SNIHandle,
>  System.Data.SqlClient.SNIPacket, UInt32 ByRef, Boolean, Boolean)
>    at System.Data.SqlClient.TdsParserStateObject.WriteSni(Boolean)
>    at System.Data.SqlClient.TdsParserStateObject.WritePacket(Byte, Boolean)
>    at 
> System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[], 
> TransactionManagerRequestType, System.String, 
> TransactionManagerIsolationLevel, Int32, 
> System.Data.SqlClient.SqlInternalTransaction, 
> System.Data.SqlClient.TdsParserStateObject, Boolean)
>    at 
> System.Data.SqlClient.SqlInternalConnectionTds.ExecuteTransactionYukon(TransactionRequest,
>  System.String, System.Data.IsolationLevel, 
> System.Data.SqlClient.SqlInternalTransaction, Boolean)
>    at 
> System.Data.SqlClient.SqlInternalConnection.BeginSqlTransaction(System.Data.IsolationLevel,
>  System.String, Boolean)
>    at 
> System.Data.SqlClient.SqlConnection.BeginTransaction(System.Data.IsolationLevel,
>  System.String)
>    at 
> System.Data.SqlClient.SqlConnection.BeginDbTransaction(System.Data.IsolationLevel)
>    at log4net.Appender.AdoNetAppender.SendBuffer(log4net.Core.LoggingEvent[])
>    at 
> log4net.Appender.BufferingAppenderSkeleton.Append(log4net.Core.LoggingEvent)
>    at <custom appender inherited from AdoNetAppender>
>    at 
> System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,
>  System.Threading.ContextCallback, System.Object, Boolean)
>    at 
> System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, 
> System.Threading.ContextCallback, System.Object, Boolean)
>    at 
> System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, 
> System.Threading.ContextCallback, System.Object)
>    at System.Threading.ThreadHelper.ThreadStart()
> {noformat}
> I believe AdoNetAppender will crash in the same way, but we use it a bit 
> customized.
> We have custom appender inherited from AdoNetAppender, which runs in separate 
> thread and uses Queue to accumulate log events, so that database logging 
> works asynchronously. It uses "base.Append(..)" to log events from queue. We 
> use SQL Azure as database, which as cloud solution is not 100% available. 
> In rare cases appender crashes the app domain on "BeginDbTransaction" line, 
> as it is not covered with try / catch block.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to