fixes after testing

This commit is contained in:
Stanley Dimant
2022-08-22 15:47:52 +02:00
parent f455d26d9e
commit bdfe51c15c
11 changed files with 69 additions and 40 deletions

View File

@@ -11,7 +11,7 @@
<PackageReference Include="Bazinga.AspNetCore.Authentication.Basic" Version="2.0.1" /> <PackageReference Include="Bazinga.AspNetCore.Authentication.Basic" Version="2.0.1" />
<PackageReference Include="Ben.BlockingDetector" Version="0.0.4" /> <PackageReference Include="Ben.BlockingDetector" Version="0.0.4" />
<PackageReference Include="EFCore.NamingConventions" Version="6.0.0" /> <PackageReference Include="EFCore.NamingConventions" Version="6.0.0" />
<PackageReference Include="Grpc.AspNetCore" Version="2.40.0" /> <PackageReference Include="Grpc.AspNetCore" Version="2.47.0" />
<PackageReference Include="Grpc.Net.Client" Version="2.47.0" /> <PackageReference Include="Grpc.Net.Client" Version="2.47.0" />
<PackageReference Include="Karambolo.Extensions.Logging.File" Version="3.3.1" /> <PackageReference Include="Karambolo.Extensions.Logging.File" Version="3.3.1" />
<PackageReference Include="lz4net" Version="1.0.15.93" /> <PackageReference Include="lz4net" Version="1.0.15.93" />
@@ -22,6 +22,7 @@
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.8" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.8" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.8"> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.8">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

View File

@@ -59,6 +59,7 @@ namespace MareSynchronosServer
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), builder => options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), builder =>
{ {
builder.MigrationsHistoryTable("_efmigrationshistory", "public"); builder.MigrationsHistoryTable("_efmigrationshistory", "public");
builder.MigrationsAssembly("MareSynchronosShared");
}).UseSnakeCaseNamingConvention(); }).UseSnakeCaseNamingConvention();
options.EnableThreadSafetyChecks(false); options.EnableThreadSafetyChecks(false);
}, Configuration.GetValue("DbContextPoolSize", 1024)); }, Configuration.GetValue("DbContextPoolSize", 1024));

View File

@@ -26,7 +26,7 @@
"DbContextPoolSize": 2000, "DbContextPoolSize": 2000,
"CdnFullUrl": "https://<url or ip to your server>/cache/", "CdnFullUrl": "https://<url or ip to your server>/cache/",
"CacheDirectory": "G:\\ServerTest", // do not delete this key and set it to the path where the files will be stored "CacheDirectory": "G:\\ServerTest", // do not delete this key and set it to the path where the files will be stored
"ServicesUrl": "http://localhost:5002", "ServiceAddress": "http://localhost:5002",
"AllowedHosts": "*", "AllowedHosts": "*",
"Kestrel": { "Kestrel": {

View File

@@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "6.0.8",
"commands": [
"dotnet-ef"
]
}
}
}

View File

@@ -1,4 +1,5 @@
using MareSynchronosServices.Authentication; using MareSynchronosServices.Authentication;
using MareSynchronosServices.Metrics;
using MareSynchronosShared.Data; using MareSynchronosShared.Data;
using MareSynchronosShared.Metrics; using MareSynchronosShared.Metrics;
using MareSynchronosShared.Models; using MareSynchronosShared.Models;
@@ -10,16 +11,16 @@ namespace MareSynchronosServices
{ {
public class CleanupService : IHostedService, IDisposable public class CleanupService : IHostedService, IDisposable
{ {
private readonly MetricsService.MetricsServiceClient _metricsClient; private readonly MareMetrics metrics;
private readonly SecretKeyAuthenticationHandler _authService; private readonly SecretKeyAuthenticationHandler _authService;
private readonly ILogger<CleanupService> _logger; private readonly ILogger<CleanupService> _logger;
private readonly IServiceProvider _services; private readonly IServiceProvider _services;
private readonly IConfiguration _configuration; private readonly IConfiguration _configuration;
private Timer _timer; private Timer _timer;
public CleanupService(MetricsService.MetricsServiceClient metricsClient, SecretKeyAuthenticationHandler authService, ILogger<CleanupService> logger, IServiceProvider services, IConfiguration configuration) public CleanupService(MareMetrics metrics, SecretKeyAuthenticationHandler authService, ILogger<CleanupService> logger, IServiceProvider services, IConfiguration configuration)
{ {
_metricsClient = metricsClient; this.metrics = metrics;
_authService = authService; _authService = authService;
_logger = logger; _logger = logger;
_services = services; _services = services;
@@ -64,8 +65,8 @@ namespace MareSynchronosServices
} }
else if (fi.LastAccessTime < prevTime) else if (fi.LastAccessTime < prevTime)
{ {
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotalSize, Value = fi.Length }); metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotalSize, fi.Length);
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotal, Value = 1 }); metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotal, 1);
_logger.LogInformation("File outdated: {fileName}", fileName); _logger.LogInformation("File outdated: {fileName}", fileName);
dbContext.Files.Remove(file); dbContext.Files.Remove(file);
fi.Delete(); fi.Delete();
@@ -94,8 +95,8 @@ namespace MareSynchronosServices
removedHashes.Add(oldestFile.Name.ToLower()); removedHashes.Add(oldestFile.Name.ToLower());
allLocalFiles.Remove(oldestFile); allLocalFiles.Remove(oldestFile);
totalCacheSizeInBytes -= oldestFile.Length; totalCacheSizeInBytes -= oldestFile.Length;
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotalSize, Value = oldestFile.Length }); metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotalSize, oldestFile.Length);
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotal, Value = 1 }); metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotal, 1);
oldestFile.Delete(); oldestFile.Delete();
} }
@@ -194,8 +195,8 @@ namespace MareSynchronosServices
var fi = new FileInfo(Path.Combine(_configuration["CacheDirectory"], file.Hash)); var fi = new FileInfo(Path.Combine(_configuration["CacheDirectory"], file.Hash));
if (fi.Exists) if (fi.Exists)
{ {
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotalSize, Value = fi.Length }); metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotalSize, fi.Length);
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotal, Value = 1 }); metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotal, 1);
fi.Delete(); fi.Delete();
} }
} }
@@ -208,10 +209,11 @@ namespace MareSynchronosServices
var otherPairData = dbContext.ClientPairs.Include(u => u.User) var otherPairData = dbContext.ClientPairs.Include(u => u.User)
.Where(u => u.OtherUser.UID == user.UID).ToList(); .Where(u => u.OtherUser.UID == user.UID).ToList();
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugePairs, Value = ownPairData.Count + otherPairData.Count });
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugePairsPaused, Value = ownPairData.Count(c => c.IsPaused) }); metrics.DecGaugeBy(MetricsAPI.GaugePairs, ownPairData.Count + otherPairData.Count);
_metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeUsersRegistered, Value = 1 }); metrics.DecGaugeBy(MetricsAPI.GaugePairsPaused, ownPairData.Count + ownPairData.Count(c => c.IsPaused));
metrics.DecGaugeBy(MetricsAPI.GaugeUsersRegistered, ownPairData.Count + 1);
dbContext.RemoveRange(otherPairData); dbContext.RemoveRange(otherPairData);
dbContext.Remove(auth); dbContext.Remove(auth);
dbContext.Remove(user); dbContext.Remove(user);

View File

@@ -9,7 +9,12 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Discord.Net" Version="3.7.2" /> <PackageReference Include="Discord.Net" Version="3.7.2" />
<PackageReference Include="EFCore.NamingConventions" Version="6.0.0" /> <PackageReference Include="EFCore.NamingConventions" Version="6.0.0" />
<PackageReference Include="Grpc.AspNetCore" Version="2.40.0" /> <PackageReference Include="Grpc.AspNetCore" Version="2.47.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.8" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.8">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="6.0.0" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.6" /> <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="6.0.6" />
<PackageReference Include="prometheus-net.AspNetCore" Version="6.0.0" /> <PackageReference Include="prometheus-net.AspNetCore" Version="6.0.0" />

View File

@@ -3,7 +3,6 @@
<PropertyGroup> <PropertyGroup>
<TargetFramework>net6.0</TargetFramework> <TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@@ -16,7 +15,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="EFCore.NamingConventions" Version="6.0.0" /> <PackageReference Include="EFCore.NamingConventions" Version="6.0.0" />
<PackageReference Include="Grpc.AspNetCore" Version="2.40.0" /> <PackageReference Include="Grpc.AspNetCore" Version="2.47.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -22,7 +22,7 @@ namespace MareSynchronosServer.Migrations
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("MareSynchronosServer.Models.Auth", b => modelBuilder.Entity("MareSynchronosShared.Models.Auth", b =>
{ {
b.Property<string>("HashedKey") b.Property<string>("HashedKey")
.HasMaxLength(64) .HasMaxLength(64)
@@ -42,7 +42,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("auth", (string)null); b.ToTable("auth", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.Banned", b => modelBuilder.Entity("MareSynchronosShared.Models.Banned", b =>
{ {
b.Property<string>("CharacterIdentification") b.Property<string>("CharacterIdentification")
.HasMaxLength(100) .HasMaxLength(100)
@@ -65,7 +65,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("banned_users", (string)null); b.ToTable("banned_users", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.BannedRegistrations", b => modelBuilder.Entity("MareSynchronosShared.Models.BannedRegistrations", b =>
{ {
b.Property<string>("DiscordIdOrLodestoneAuth") b.Property<string>("DiscordIdOrLodestoneAuth")
.HasMaxLength(100) .HasMaxLength(100)
@@ -78,7 +78,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("banned_registrations", (string)null); b.ToTable("banned_registrations", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b => modelBuilder.Entity("MareSynchronosShared.Models.ClientPair", b =>
{ {
b.Property<string>("UserUID") b.Property<string>("UserUID")
.HasMaxLength(10) .HasMaxLength(10)
@@ -116,7 +116,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("client_pairs", (string)null); b.ToTable("client_pairs", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.FileCache", b => modelBuilder.Entity("MareSynchronosShared.Models.FileCache", b =>
{ {
b.Property<string>("Hash") b.Property<string>("Hash")
.HasMaxLength(40) .HasMaxLength(40)
@@ -147,7 +147,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("file_caches", (string)null); b.ToTable("file_caches", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.ForbiddenUploadEntry", b => modelBuilder.Entity("MareSynchronosShared.Models.ForbiddenUploadEntry", b =>
{ {
b.Property<string>("Hash") b.Property<string>("Hash")
.HasMaxLength(40) .HasMaxLength(40)
@@ -171,7 +171,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("forbidden_upload_entries", (string)null); b.ToTable("forbidden_upload_entries", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.LodeStoneAuth", b => modelBuilder.Entity("MareSynchronosShared.Models.LodeStoneAuth", b =>
{ {
b.Property<decimal>("DiscordId") b.Property<decimal>("DiscordId")
.ValueGeneratedOnAdd() .ValueGeneratedOnAdd()
@@ -205,7 +205,7 @@ namespace MareSynchronosServer.Migrations
b.ToTable("lodestone_auth", (string)null); b.ToTable("lodestone_auth", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.User", b => modelBuilder.Entity("MareSynchronosShared.Models.User", b =>
{ {
b.Property<string>("UID") b.Property<string>("UID")
.HasMaxLength(10) .HasMaxLength(10)
@@ -244,9 +244,9 @@ namespace MareSynchronosServer.Migrations
b.ToTable("users", (string)null); b.ToTable("users", (string)null);
}); });
modelBuilder.Entity("MareSynchronosServer.Models.Auth", b => modelBuilder.Entity("MareSynchronosShared.Models.Auth", b =>
{ {
b.HasOne("MareSynchronosServer.Models.User", "User") b.HasOne("MareSynchronosShared.Models.User", "User")
.WithMany() .WithMany()
.HasForeignKey("UserUID") .HasForeignKey("UserUID")
.HasConstraintName("fk_auth_users_user_temp_id"); .HasConstraintName("fk_auth_users_user_temp_id");
@@ -254,16 +254,16 @@ namespace MareSynchronosServer.Migrations
b.Navigation("User"); b.Navigation("User");
}); });
modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b => modelBuilder.Entity("MareSynchronosShared.Models.ClientPair", b =>
{ {
b.HasOne("MareSynchronosServer.Models.User", "OtherUser") b.HasOne("MareSynchronosShared.Models.User", "OtherUser")
.WithMany() .WithMany()
.HasForeignKey("OtherUserUID") .HasForeignKey("OtherUserUID")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
.IsRequired() .IsRequired()
.HasConstraintName("fk_client_pairs_users_other_user_temp_id1"); .HasConstraintName("fk_client_pairs_users_other_user_temp_id1");
b.HasOne("MareSynchronosServer.Models.User", "User") b.HasOne("MareSynchronosShared.Models.User", "User")
.WithMany() .WithMany()
.HasForeignKey("UserUID") .HasForeignKey("UserUID")
.OnDelete(DeleteBehavior.Cascade) .OnDelete(DeleteBehavior.Cascade)
@@ -275,9 +275,9 @@ namespace MareSynchronosServer.Migrations
b.Navigation("User"); b.Navigation("User");
}); });
modelBuilder.Entity("MareSynchronosServer.Models.FileCache", b => modelBuilder.Entity("MareSynchronosShared.Models.FileCache", b =>
{ {
b.HasOne("MareSynchronosServer.Models.User", "Uploader") b.HasOne("MareSynchronosShared.Models.User", "Uploader")
.WithMany() .WithMany()
.HasForeignKey("UploaderUID") .HasForeignKey("UploaderUID")
.HasConstraintName("fk_file_caches_users_uploader_uid"); .HasConstraintName("fk_file_caches_users_uploader_uid");
@@ -285,9 +285,9 @@ namespace MareSynchronosServer.Migrations
b.Navigation("Uploader"); b.Navigation("Uploader");
}); });
modelBuilder.Entity("MareSynchronosServer.Models.LodeStoneAuth", b => modelBuilder.Entity("MareSynchronosShared.Models.LodeStoneAuth", b =>
{ {
b.HasOne("MareSynchronosServer.Models.User", "User") b.HasOne("MareSynchronosShared.Models.User", "User")
.WithMany() .WithMany()
.HasForeignKey("UserUID") .HasForeignKey("UserUID")
.HasConstraintName("fk_lodestone_auth_users_user_uid"); .HasConstraintName("fk_lodestone_auth_users_user_uid");

View File

@@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "6.0.8",
"commands": [
"dotnet-ef"
]
}
}
}

View File

@@ -7,7 +7,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Grpc.AspNetCore" Version="2.40.0" /> <PackageReference Include="Grpc.AspNetCore" Version="2.47.0" />
<PackageReference Include="Grpc.Net.Client" Version="2.47.0" /> <PackageReference Include="Grpc.Net.Client" Version="2.47.0" />
<PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.Systemd" Version="6.0.0" />
</ItemGroup> </ItemGroup>

View File

@@ -1,7 +1,4 @@
{ {
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=mare;Username=postgres"
},
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
"Default": "Information", "Default": "Information",
@@ -17,5 +14,5 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"CacheDirectory": "G:\\ServerTest", // do not delete this key and set it to the path where the files will be stored "CacheDirectory": "G:\\ServerTest", // do not delete this key and set it to the path where the files will be stored
"ServicesUrl": "http://localhost:5002" "ServiceAddress": "http://localhost:5002"
} }