Browse Source

Merge pull request #122 from dotnet/bugs/#75-NoRetryLoginAtCatch

Removed the catch with retry logic from CatalogContextSeed
pull/119/merge
Cesar De la Torre 7 years ago
committed by GitHub
parent
commit
b1b7ca5a4c
2 changed files with 47 additions and 36 deletions
  1. +20
    -34
      src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs
  2. +27
    -2
      src/Services/Catalog/Catalog.API/Startup.cs

+ 20
- 34
src/Services/Catalog/Catalog.API/Infrastructure/CatalogContextSeed.cs View File

@ -13,47 +13,33 @@
{
public static async Task SeedAsync(IApplicationBuilder applicationBuilder, ILoggerFactory loggerFactory, int? retry = 0)
{
int retryForAvaiability = retry.Value;
try
{
var context = (CatalogContext)applicationBuilder
.ApplicationServices.GetService(typeof(CatalogContext));
context.Database.Migrate();
var context = (CatalogContext)applicationBuilder
.ApplicationServices.GetService(typeof(CatalogContext));
if (!context.CatalogBrands.Any())
{
context.CatalogBrands.AddRange(
GetPreconfiguredCatalogBrands());
context.Database.Migrate();
await context.SaveChangesAsync();
}
if (!context.CatalogTypes.Any())
{
context.CatalogTypes.AddRange(
GetPreconfiguredCatalogTypes());
if (!context.CatalogBrands.Any())
{
context.CatalogBrands.AddRange(
GetPreconfiguredCatalogBrands());
await context.SaveChangesAsync();
}
await context.SaveChangesAsync();
}
if (!context.CatalogItems.Any())
{
context.CatalogItems.AddRange(
GetPreconfiguredItems());
if (!context.CatalogTypes.Any())
{
context.CatalogTypes.AddRange(
GetPreconfiguredCatalogTypes());
await context.SaveChangesAsync();
}
await context.SaveChangesAsync();
}
catch (Exception ex)
if (!context.CatalogItems.Any())
{
if (retryForAvaiability < 10)
{
retryForAvaiability++;
var log = loggerFactory.CreateLogger("catalog seed");
log.LogError(ex.Message);
await SeedAsync(applicationBuilder, loggerFactory, retryForAvaiability);
}
context.CatalogItems.AddRange(
GetPreconfiguredItems());
await context.SaveChangesAsync();
}
}


+ 27
- 2
src/Services/Catalog/Catalog.API/Startup.cs View File

@ -11,6 +11,7 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System;
using System.Data.SqlClient;
using System.IO;
using System.Reflection;
using System.Threading;
@ -95,11 +96,35 @@
app.UseSwagger()
.UseSwaggerUi();
var context = (CatalogContext)app
.ApplicationServices.GetService(typeof(CatalogContext));
WaitForSqlAvailability(context, loggerFactory);
//Seed Data
CatalogContextSeed.SeedAsync(app, loggerFactory)
.Wait();
.Wait();
}
private void WaitForSqlAvailability(CatalogContext ctx, ILoggerFactory loggerFactory, int? retry = 0)
{
int retryForAvailability = retry.Value;
try
{
ctx.Database.OpenConnection();
}
catch(SqlException ex)
{
if (retryForAvailability < 10)
{
retryForAvailability++;
var log = loggerFactory.CreateLogger(nameof(Startup));
log.LogError(ex.Message);
WaitForSqlAvailability(ctx, loggerFactory, retryForAvailability);
}
}
finally {
ctx.Database.CloseConnection();
}
}
}
}

Loading…
Cancel
Save