Skip to content

Commit

Permalink
Update with better error reporting.
Browse files Browse the repository at this point in the history
  • Loading branch information
MrHinsh committed Jul 14, 2024
1 parent a033a3f commit 0080469
Show file tree
Hide file tree
Showing 40 changed files with 95 additions and 53 deletions.
2 changes: 1 addition & 1 deletion docs/Reference/Generated/MigrationTools.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ private TfsTeamProjectCollection GetTfsCollection()
{
timer.Stop();
Telemetry.TrackDependency(new DependencyTelemetry("TfsObjectModel", Options.Organisation, "GetTfsCollection", null, startTime, timer.Elapsed, "500", false));
Telemetry.TrackException(ex, null, null);
Log.LogError(ex, "Unable to connect to {Organisation}", Options.Organisation);
throw;
}
Expand All @@ -131,16 +132,18 @@ private WorkItemStore GetWorkItemStore(TfsTeamProjectCollection tfs, WorkItemSto
try
{
_Store = new WorkItemStore(tfs, bypassRules);
timer.Stop();
Telemetry.TrackDependency(new DependencyTelemetry("TfsObjectModel", Options.Organisation, "GetWorkItemStore", null, startTime, timer.Elapsed, "200", true));
}
catch (Exception ex)
{
timer.Stop();
Telemetry.TrackDependency(new DependencyTelemetry("TfsObjectModel", Options.Organisation, "GetWorkItemStore", null, startTime, timer.Elapsed, "500", false));
Telemetry.TrackException(ex, null, null);
Log.LogError(ex, "Unable to connect to {Organisation} Store", Options.Organisation);
throw;
}
finally
{
timer.Stop();
Telemetry.TrackDependency(new DependencyTelemetry("TfsObjectModel", Options.Organisation, "GetWorkItemStore", null, startTime, timer.Elapsed, "200", true));
}
}

return _Store;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public class TfsEmbededImagesEnricher : EmbededImagesRepairEnricherBase

public IMigrationEngine Engine { get; private set; }

public TfsEmbededImagesEnricher(IServiceProvider services, ILogger<TfsEmbededImagesEnricher> logger) : base(services, logger)
public TfsEmbededImagesEnricher(IServiceProvider services, ILogger<TfsEmbededImagesEnricher> logger, ITelemetryLogger telemetryLogger) : base(services, logger, telemetryLogger)
{
Engine = services.GetRequiredService<IMigrationEngine>();
_targetProject = Engine.Target.WorkItems.Project.ToProject();
Expand Down Expand Up @@ -118,6 +118,7 @@ protected override void FixEmbededImages(WorkItemData wi, string oldTfsurl, stri
catch (Exception ex)
{
Log.LogError(ex, "EmbededImagesRepairEnricher: Unable to fix HTML field attachments for work item {wiId} from {oldTfsurl} to {newTfsurl}", wi.Id, oldTfsurl, newTfsurl);
Telemetry.TrackException(ex, null, null);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class TfsGitRepositoryEnricher : WorkItemProcessorEnricher

public IMigrationEngine Engine { get => _Engine; set => _Engine = value; }

public TfsGitRepositoryEnricher(IServiceProvider services, ILogger<TfsGitRepositoryEnricher> logger) : base(services, logger)
public TfsGitRepositoryEnricher(IServiceProvider services, ILogger<TfsGitRepositoryEnricher> logger, ITelemetryLogger telemetryLogger) : base(services, logger, telemetryLogger)
{
Engine = Services.GetRequiredService<IMigrationEngine>();
_Logger = logger ?? throw new ArgumentNullException(nameof(logger));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ public class TfsWorkItemEmbededLinkEnricher : WorkItemProcessorEnricher
private readonly Lazy<List<TeamFoundationIdentity>> _targetTeamFoundationIdentitiesLazyCache;
private readonly IMigrationEngine Engine;

public TfsWorkItemEmbededLinkEnricher(IServiceProvider services, ILogger<TfsWorkItemEmbededLinkEnricher> logger)
: base(services, logger)
public TfsWorkItemEmbededLinkEnricher(IServiceProvider services, ILogger<TfsWorkItemEmbededLinkEnricher> logger, ITelemetryLogger telemetryLogger)
: base(services, logger, telemetryLogger)
{
Engine = services.GetRequiredService<IMigrationEngine>();

Expand All @@ -40,6 +40,7 @@ public TfsWorkItemEmbededLinkEnricher(IServiceProvider services, ILogger<TfsWork
catch (Exception ex)
{
Log.LogError(ex, "{LogTypeName}: Unable load list of identities from target collection.", LogTypeName);
Telemetry.TrackException(ex, null,null);
return new List<TeamFoundationIdentity>();
}
});
Expand Down Expand Up @@ -136,6 +137,7 @@ public override int Enrich(WorkItemData sourceWorkItem, WorkItemData targetWorkI
catch (Exception ex)
{
Log.LogError(ex, "{LogTypeName}: Unable to fix embedded mention links on field {fieldName} on target work item {targetWorkItemId} from {oldTfsurl} to {newTfsurl}", LogTypeName, field.Name, targetWorkItem.Id, oldTfsurl, newTfsurl);
Telemetry.TrackException(ex, null, null);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldClearMap : FieldMapBase
{
public FieldClearMap(ILogger<FieldSkipMap> logger) : base(logger)
public FieldClearMap(ILogger<FieldSkipMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldLiteralMap : FieldMapBase
{
public FieldLiteralMap(ILogger<FieldLiteralMap> logger) : base(logger)
public FieldLiteralMap(ILogger<FieldLiteralMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Microsoft.ApplicationInsights.Channel;
using Microsoft.Extensions.Logging;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using MigrationTools._EngineV1.Configuration;
Expand All @@ -11,10 +12,12 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
public abstract class FieldMapBase : IFieldMap
{
protected IFieldMapConfig _Config;
protected ITelemetryLogger Telemetry;

public FieldMapBase(ILogger<FieldMapBase> logger)
public FieldMapBase(ILogger<FieldMapBase> logger, ITelemetryLogger telemetryLogger)
{
Log = logger;
Telemetry = telemetryLogger;
}

public virtual void Configure(IFieldMapConfig config)
Expand Down Expand Up @@ -42,6 +45,7 @@ public void Execute(WorkItemData source, WorkItemData target)
{ "Source", source.ToWorkItem().Id.ToString() },
{ "Target", target.ToWorkItem().Id.ToString()}
});
Telemetry.TrackException(ex, null, null);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldMergeMap : FieldMapBase
{
public FieldMergeMap(ILogger<FieldMergeMap> logger) : base(logger)
public FieldMergeMap(ILogger<FieldMergeMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldSkipMap : FieldMapBase
{
public FieldSkipMap(ILogger<FieldSkipMap> logger) : base(logger)
public FieldSkipMap(ILogger<FieldSkipMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldToFieldMap : FieldMapBase
{
public FieldToFieldMap(ILogger<FieldToFieldMap> logger) : base(logger)
public FieldToFieldMap(ILogger<FieldToFieldMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldToTagFieldMap : FieldMapBase
{
public FieldToTagFieldMap(ILogger<FieldToTagFieldMap> logger) : base(logger)
public FieldToTagFieldMap(ILogger<FieldToTagFieldMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldValueMap : FieldMapBase
{
public FieldValueMap(ILogger<FieldValueMap> logger) : base(logger)
public FieldValueMap(ILogger<FieldValueMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldValuetoTagMap : FieldMapBase
{
public FieldValuetoTagMap(ILogger<FieldValuetoTagMap> logger) : base(logger)
public FieldValuetoTagMap(ILogger<FieldValuetoTagMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class FieldtoFieldMultiMap : FieldMapBase
{
public FieldtoFieldMultiMap(ILogger<FieldtoFieldMultiMap> logger) : base(logger)
public FieldtoFieldMultiMap(ILogger<FieldtoFieldMultiMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class MultiValueConditionalMap : FieldMapBase
{
public MultiValueConditionalMap(ILogger<MultiValueConditionalMap> logger) : base(logger)
public MultiValueConditionalMap(ILogger<MultiValueConditionalMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class RegexFieldMap : FieldMapBase
{
public RegexFieldMap(ILogger<RegexFieldMap> logger) : base(logger)
public RegexFieldMap(ILogger<RegexFieldMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace MigrationTools.FieldMaps.AzureDevops.ObjectModel
{
public class TreeToTagFieldMap : FieldMapBase
{
public TreeToTagFieldMap(ILogger<TreeToTagFieldMap> logger) : base(logger)
public TreeToTagFieldMap(ILogger<TreeToTagFieldMap> logger, ITelemetryLogger telemetryLogger) : base(logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class TfsAttachmentEnricher : WorkItemProcessorEnricher, IAttachmentMigra

public TfsAttachmentEnricherOptions Options { get { return _options; } }

public TfsAttachmentEnricher(IServiceProvider services, ILogger<WorkItemProcessorEnricher> logger) : base(services, logger)
public TfsAttachmentEnricher(IServiceProvider services, ILogger<WorkItemProcessorEnricher> logger, ITelemetryLogger telemetryLogger) : base(services, logger, telemetryLogger)
{

}
Expand Down Expand Up @@ -75,6 +75,7 @@ public void ProcessAttachemnts(WorkItemData source, WorkItemData target, bool sa
catch (Exception ex)
{
Log.LogError(ex, "AttachmentMigrationEnricher:Unable to process atachment from source wi {SourceWorkItemId} called {AttachmentName}", source.ToWorkItem().Id, wia.Name);
Telemetry.TrackException(ex, null, null);
}
}
if (save)
Expand All @@ -95,9 +96,10 @@ public void CleanUpAfterSave()
Directory.Delete(_exportWiPath, true);
_exportWiPath = null;
}
catch (Exception)
catch (Exception ex)
{
Log.LogWarning(" ERROR: Unable to delete folder {0}", _exportWiPath);
Telemetry.TrackException(ex, null, null);
}
}
}
Expand All @@ -121,6 +123,7 @@ private string ExportAttachment(WorkItem wi, Attachment wia, string exportpath)
catch (Exception ex)
{
Log.LogError(ex, "Exception downloading attachements");
Telemetry.TrackException(ex, null, null);
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ public class TfsNodeStructure : WorkItemProcessorEnricher
private string _targetProjectName;
private KeyValuePair<string, string>? _lastResortRemapRule;

public TfsNodeStructure(IServiceProvider services, ILogger<TfsNodeStructure> logger)
: base(services, logger)
public TfsNodeStructure(IServiceProvider services, ILogger<TfsNodeStructure> logger, ITelemetryLogger telemetryLogger)
: base(services, logger, telemetryLogger)
{
contextLog = Serilog.Log.ForContext<TfsNodeStructure>();
}
Expand Down Expand Up @@ -182,6 +182,7 @@ private NodeInfo GetOrCreateNode(string nodePath, DateTime? startDate, DateTime?
} catch (Exception ex)
{
Log.LogDebug(" Not Found:", currentAncestorPath);
Telemetry.TrackException(ex, null, null);
parentNode = null;
}

Expand Down Expand Up @@ -470,6 +471,7 @@ private void ProcessCommonStructure(string treeTypeSource, string localizedTreeT
{
Exception ex2 = new Exception(string.Format("Unable to load Common Structure for Target.This is usually due to different language versions. Validate that '{0}' is the correct name in your version. ", localizedTreeTypeName), ex);
Log.LogError(ex2, "Unable to load Common Structure for Target.");
Telemetry.TrackException(ex2, null, null);
throw ex2;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ namespace MigrationTools.Enrichers
/// </summary>
public class TfsRevisionManager : WorkItemProcessorEnricher
{
public TfsRevisionManager(IServiceProvider services, ILogger<TfsRevisionManager> logger)
: base(services, logger)
public TfsRevisionManager(IServiceProvider services, ILogger<TfsRevisionManager> logger, ITelemetryLogger telemetryLogger)
: base(services, logger, telemetryLogger)
{
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public class TfsTeamSettingsEnricher : WorkItemProcessorEnricher

public TfsTeamSettingsEnricherOptions Options { get; private set; }

public TfsTeamSettingsEnricher(IServiceProvider services, ILogger<TfsTeamSettingsEnricher> logger) : base(services, logger)
public TfsTeamSettingsEnricher(IServiceProvider services, ILogger<TfsTeamSettingsEnricher> logger, ITelemetryLogger telemetryLogger) : base(services, logger, telemetryLogger)
{
Services = services;
Engine = services.GetRequiredService<IMigrationEngine>();
Expand All @@ -60,6 +60,7 @@ public TfsTeamSettingsEnricher(IServiceProvider services, ILogger<TfsTeamSetting
catch (Exception ex)
{
Log.LogError(ex, "{LogTypeName}: Unable load list of identities from target collection.", LogTypeName);
Telemetry.TrackException(ex, null, null);
return new List<TeamFoundationIdentity>();
}
});
Expand Down Expand Up @@ -336,13 +337,15 @@ private void MigrateCapacities(TeamFoundationTeam sourceTeam, TeamFoundationTeam
}
catch (Exception ex)
{
Telemetry.TrackException(ex, null, null);
Log.LogError(ex, "[SKIP] Problem migrating team capacities for iteration {iteration}.", sourceIteration.Path);
}

}
}
catch (Exception ex)
{
Telemetry.TrackException(ex, null, null);
Log.LogError(ex, "[SKIP] Problem migrating team capacities.");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ private IGroupSecurityService GssTarget

public TfsUserMappingEnricherOptions Options { get; private set; }

public TfsUserMappingEnricher(IServiceProvider services, ILogger<TfsUserMappingEnricher> logger) : base(services, logger)
public TfsUserMappingEnricher(IServiceProvider services, ILogger<TfsUserMappingEnricher> logger, ITelemetryLogger telemetryLogger) : base(services, logger, telemetryLogger)
{
Engine = services.GetRequiredService<IMigrationEngine>();
}
Expand Down Expand Up @@ -178,6 +178,7 @@ private List<IdentityItemData> GetUsersListFromServer(IGroupSecurityService gss)
}
catch (Exception ex)
{
Telemetry.TrackException(ex, null, null);
Log.LogWarning("TfsUserMappingEnricher::GetUsersListFromServer::[user:{user}] Failed With {Exception}", user, ex.Message);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class TfsValidateRequiredField : WorkItemProcessorEnricher
{
private TfsValidateRequiredFieldOptions _Options;

public TfsValidateRequiredField(IServiceProvider services, ILogger<TfsValidateRequiredField> logger) : base(services, logger)
public TfsValidateRequiredField(IServiceProvider services, ILogger<TfsValidateRequiredField> logger, ITelemetryLogger telemetryLogger) : base(services, logger, telemetryLogger)
{
Engine = services.GetRequiredService<IMigrationEngine>();
}
Expand Down
Loading

0 comments on commit 0080469

Please sign in to comment.