Skip to content

Commit

Permalink
Improved retry logic and logging
Browse files Browse the repository at this point in the history
  • Loading branch information
spaghettidba committed May 30, 2024
1 parent ff9b71c commit 4fe0b42
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 22 deletions.
4 changes: 2 additions & 2 deletions AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.5.4.0")]
[assembly: AssemblyFileVersion("1.5.4.0")]
[assembly: AssemblyVersion("1.5.6.0")]
[assembly: AssemblyFileVersion("1.5.6.0")]
54 changes: 41 additions & 13 deletions XESmartTarget.Core/Target.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,34 +140,63 @@ internal void Process()

bool connectedOnce = false;
bool shouldContinue = true;
int attempts = 0;

QueryableXEventData eventStream = null;


while (shouldContinue)
{
try
{
QueryableXEventData eventStream = ConnectSessionStream(ConnectionString);
if(attempts < 240) attempts++; // connect attempts will be at least every 1 hour (240 * 15 sec = 3600 sec = 1 hour)

eventStream = ConnectSessionStream(ConnectionString);
connectedOnce = true;
logger.Info($"Connected to {ServerName}.");
ProcessStreamData(eventStream);
attempts = 0;
logger.Info($"Connected to '{ServerName}'.");
}
catch (Exception e)
{
logger.Error(e, ServerName);
if (FailOnProcessingError)
if(attempts == 1)
{
throw;
logger.Error($"Error connecting to '{ServerName}'");
logger.Error(e.InnerException ?? e);
}
else
{
int? errNumber = (e.InnerException as SqlException)?.Number;
if ((errNumber == 25727 || errNumber == 25728)
&& connectedOnce)
string msg = e.Message;
if (e.InnerException != null)
{
shouldContinue = true;
Thread.Sleep(15000); // sleep 15 seconds and reconnect
msg = e.InnerException.Message;
}
logger.Error($"Error connecting to '{ServerName}', attempt {attempts}");
logger.Error(msg);
}

if (FailOnProcessingError)
{
throw;
}
else
{
Thread.Sleep(attempts * 15000); // linear reconnect backoff
continue;
}
}
try
{
ProcessStreamData(eventStream);
}
catch(Exception e)
{
logger.Error($"Error processing event data from '{ServerName}'");
logger.Error(e);
if (FailOnProcessingError)
{
eventStream.Dispose();
throw;
}
else {
shouldContinue = connectedOnce;
}
}
Expand Down Expand Up @@ -229,7 +258,6 @@ private QueryableXEventData ConnectSessionStream(string connectionString)
catch (Exception e)
{
var ioe = new InvalidOperationException($"Unable to connect to the Extended Events session {SessionName} on server {ServerName}", e);
logger.Error(ioe);
throw ioe;
}

Expand Down
5 changes: 4 additions & 1 deletion XESmartTarget.Core/XESmartTarget.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,10 @@
<Version>13.0.3</Version>
</PackageReference>
<PackageReference Include="NLog">
<Version>4.4.12</Version>
<Version>4.7.15</Version>
</PackageReference>
<PackageReference Include="NLog.Config">
<Version>4.7.15</Version>
</PackageReference>
<PackageReference Include="SmartFormat.NET">
<Version>2.1.0.2</Version>
Expand Down
11 changes: 9 additions & 2 deletions XESmartTarget/NLog.config
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,15 @@


<targets>
<target name="logfile" xsi:type="File" fileName="XESmartTarget.log" layout="${longdate} - ${level} - ${logger} : ${message}" />
<target name="console" xsi:type="Console" layout="${level} - ${logger} : ${message}"/>
<target name="logfile"
xsi:type="File"
fileName="XESmartTarget.${shortdate}.log"
layout="${longdate} - ${level} - ${logger} : ${message}"
archiveAboveSize="5242880"
maxArchiveFiles="3" />
<target name="console"
xsi:type="Console"
layout="${level} - ${logger} : ${message}"/>
</targets>

<rules>
Expand Down
2 changes: 1 addition & 1 deletion XESmartTarget/XESmartTarget.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
<Version>2.9.1</Version>
</PackageReference>
<PackageReference Include="NLog.Config">
<Version>4.4.12</Version>
<Version>4.7.15</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Expand Down
9 changes: 7 additions & 2 deletions XelToCsv/XelToCsv.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,22 @@
<HintPath>..\packages\CommandLineParser.2.9.1\lib\net461\CommandLine.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.4.12\lib\net45\NLog.dll</HintPath>
<HintPath>..\packages\NLog.4.7.15\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Configuration" />
<Reference Include="System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Console.4.3.1\lib\net46\System.Console.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Reflection.TypeExtensions, Version=4.1.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.TypeExtensions.4.7.0\lib\net461\System.Reflection.TypeExtensions.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
Expand All @@ -104,7 +109,7 @@
<ItemGroup>
<None Include="App.config" />
<Content Include="NLog.config">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="NLog.xsd">
<SubType>Designer</SubType>
Expand Down
4 changes: 3 additions & 1 deletion XelToCsv/packages.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommandLineParser" version="2.9.1" targetFramework="net461" />
<package id="NLog" version="4.4.12" targetFramework="net461" />
<package id="NLog" version="4.7.15" targetFramework="net461" />
<package id="NLog.Config" version="4.7.15" targetFramework="net461" />
<package id="NLog.Schema" version="4.7.15" targetFramework="net461" />
<package id="System.Collections" version="4.3.0" targetFramework="net461" />
<package id="System.Console" version="4.3.1" targetFramework="net461" />
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net461" />
Expand Down

0 comments on commit 4fe0b42

Please sign in to comment.