diff --git a/AssemblyInfo.cs b/AssemblyInfo.cs
index 9f9720d..93b5d8c 100644
--- a/AssemblyInfo.cs
+++ b/AssemblyInfo.cs
@@ -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")]
diff --git a/XESmartTarget.Core/Target.cs b/XESmartTarget.Core/Target.cs
index 40aaef6..a6e2b1d 100644
--- a/XESmartTarget.Core/Target.cs
+++ b/XESmartTarget.Core/Target.cs
@@ -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;
}
}
@@ -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;
}
diff --git a/XESmartTarget.Core/XESmartTarget.Core.csproj b/XESmartTarget.Core/XESmartTarget.Core.csproj
index c8f75c9..b7486ad 100644
--- a/XESmartTarget.Core/XESmartTarget.Core.csproj
+++ b/XESmartTarget.Core/XESmartTarget.Core.csproj
@@ -170,7 +170,10 @@
13.0.3
- 4.4.12
+ 4.7.15
+
+
+ 4.7.15
2.1.0.2
diff --git a/XESmartTarget/NLog.config b/XESmartTarget/NLog.config
index 96183fd..7d4d716 100644
--- a/XESmartTarget/NLog.config
+++ b/XESmartTarget/NLog.config
@@ -8,8 +8,15 @@
-
-
+
+
diff --git a/XESmartTarget/XESmartTarget.csproj b/XESmartTarget/XESmartTarget.csproj
index 7be6874..55b49f8 100644
--- a/XESmartTarget/XESmartTarget.csproj
+++ b/XESmartTarget/XESmartTarget.csproj
@@ -136,7 +136,7 @@
2.9.1
- 4.4.12
+ 4.7.15
diff --git a/XelToCsv/XelToCsv.csproj b/XelToCsv/XelToCsv.csproj
index 97d4c60..8512100 100644
--- a/XelToCsv/XelToCsv.csproj
+++ b/XelToCsv/XelToCsv.csproj
@@ -76,17 +76,22 @@
..\packages\CommandLineParser.2.9.1\lib\net461\CommandLine.dll
- ..\packages\NLog.4.4.12\lib\net45\NLog.dll
+ ..\packages\NLog.4.7.15\lib\net45\NLog.dll
+
..\packages\System.Console.4.3.1\lib\net46\System.Console.dll
+
..\packages\System.Reflection.TypeExtensions.4.7.0\lib\net461\System.Reflection.TypeExtensions.dll
+
+
+
@@ -104,7 +109,7 @@
- Always
+ PreserveNewest
Designer
diff --git a/XelToCsv/packages.config b/XelToCsv/packages.config
index ef56721..d0a8f17 100644
--- a/XelToCsv/packages.config
+++ b/XelToCsv/packages.config
@@ -1,7 +1,9 @@
-
+
+
+