Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • Fix/xxxx-oldSchool
  • Hotfix/2352-onlyChanged
  • Hotfix/2615-graphDeployerLag
  • Hotfix/790-orgDeploy
  • Hotfix/953-fileNameWithSpace
  • Hotfix/999-fixGraphdeployer
  • Hotfix/xxxx-directoryDependency
  • Hotfix/xxxx-fastDeployment
  • Issue/2518-docs
  • Issue/2568-betterLogging
  • Issue/2668-graphDeployer
  • Issue/2880-gd
  • Issue/2906-containerCron
  • Issue/2915-migrateSql2Linked
  • Issue/2944-gdShenanigans
  • Issue/2967-fixGD
  • Issue/2980-fixContainerBuild
  • Issue/3109-onboarding
  • Issue/3130-onboardingUzK
  • Issue/xxxx-fixDevcontainer
  • Issue/xxxx-generateLatestTag
  • Product/483-organizations
  • Product/871-generalDeployment
  • Sprint/2020-07
  • Sprint/2020-11
  • Sprint/2020-12
  • Sprint/2022-01
  • Topic/711-organizations
  • Topic/713-rwthOrgState
  • Topic/886-generalDeployment
  • dev
  • gitkeep
  • master
  • petar.hristov-master-patch-9e49
  • test_ci
  • v1.1.0
  • v1.1.1
  • v1.2.0
  • v1.2.1
  • v1.2.10
  • v1.2.11
  • v1.2.2
  • v1.2.3
  • v1.2.4
  • v1.2.5
  • v1.2.6
  • v1.2.7
  • v1.2.8
  • v1.2.9
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.1.1
  • v2.1.10
  • v2.1.11
  • v2.1.2
  • v2.1.3
  • v2.1.4
  • v2.1.5
  • v2.1.6
  • v2.1.7
  • v2.1.8
  • v2.1.9
63 results

Target

Select target project
  • coscine/backend/scripts/graphdeployer
1 result
Select Git revision
  • Fix/xxxx-oldSchool
  • Hotfix/2352-onlyChanged
  • Hotfix/2615-graphDeployerLag
  • Hotfix/790-orgDeploy
  • Hotfix/953-fileNameWithSpace
  • Hotfix/999-fixGraphdeployer
  • Hotfix/xxxx-directoryDependency
  • Hotfix/xxxx-fastDeployment
  • Issue/2518-docs
  • Issue/2568-betterLogging
  • Issue/2668-graphDeployer
  • Issue/2880-gd
  • Issue/2906-containerCron
  • Issue/2915-migrateSql2Linked
  • Issue/2944-gdShenanigans
  • Issue/2967-fixGD
  • Issue/2980-fixContainerBuild
  • Issue/3109-onboarding
  • Issue/3130-onboardingUzK
  • Issue/xxxx-fixDevcontainer
  • Issue/xxxx-generateLatestTag
  • Product/483-organizations
  • Product/871-generalDeployment
  • Sprint/2020-07
  • Sprint/2020-11
  • Sprint/2020-12
  • Sprint/2022-01
  • Topic/711-organizations
  • Topic/713-rwthOrgState
  • Topic/886-generalDeployment
  • dev
  • gitkeep
  • master
  • petar.hristov-master-patch-9e49
  • test_ci
  • v1.1.0
  • v1.1.1
  • v1.2.0
  • v1.2.1
  • v1.2.10
  • v1.2.11
  • v1.2.2
  • v1.2.3
  • v1.2.4
  • v1.2.5
  • v1.2.6
  • v1.2.7
  • v1.2.8
  • v1.2.9
  • v2.0.0
  • v2.0.1
  • v2.1.0
  • v2.1.1
  • v2.1.10
  • v2.1.11
  • v2.1.2
  • v2.1.3
  • v2.1.4
  • v2.1.5
  • v2.1.6
  • v2.1.7
  • v2.1.8
  • v2.1.9
63 results
Show changes
Commits on Source (3)
......@@ -7,7 +7,7 @@
<AssemblyName>Coscine.GraphDeployer</AssemblyName>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<Version>1.2.5</Version>
<Version>1.2.6</Version>
</PropertyGroup>
<PropertyGroup>
......@@ -27,6 +27,7 @@
<PackageReference Include="LibGit2Sharp" Version="0.26.2" />
<PackageReference Include="NLog" Version="5.1.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.2.0" />
<PackageReference Include="Polly.Extensions.Http" Version="3.0.0" />
</ItemGroup>
<ItemGroup>
......
using Polly;
namespace Coscine.GraphDeployer;
public static class Helpers
{
/// <summary>
/// Retry Virtuoso Requests since they sometimes just fail
/// </summary>
/// <typeparam name="W"></typeparam>
/// <param name="function"></param>
/// <returns></returns>
public static void WrapRequest(Action action)
{
Policy
.Handle<Exception>()
.WaitAndRetry(5, retryNumber => TimeSpan.FromMilliseconds(200))
.Execute(() => action.Invoke());
}
/// <summary>
/// Retry Virtuoso Requests since they sometimes just fail
/// </summary>
/// <typeparam name="W"></typeparam>
/// <param name="function"></param>
/// <returns></returns>
public static W WrapRequest<W>(Func<W> function)
{
return Policy
.Handle<Exception>()
.WaitAndRetry(5, retryNumber => TimeSpan.FromMilliseconds(200))
.ExecuteAndCapture(() => function.Invoke()).Result;
}
}
......@@ -90,16 +90,41 @@ public class Program
// Graph Insertion
var queries = new List<string>();
var turtleFiles = Directory.GetFiles(WorkingFolder, "*.ttl", SearchOption.AllDirectories);
foreach (var file in turtleFiles)
var graphAccumulation = new Dictionary<Uri, (Graph, List<string>)>();
Array.ForEach(turtleFiles, (file) =>
{
var fileInfo = new FileInfo(file);
var graph = new Graph();
graph.LoadFromFile(file);
var graphName = graph.BaseUri.ToString();
if (graphAccumulation.ContainsKey(graph.BaseUri))
{
graphAccumulation[graph.BaseUri].Item1.Merge(graph);
graphAccumulation[graph.BaseUri].Item2.Add(file);
}
else
{
graphAccumulation.Add(graph.BaseUri, (graph, new List<string>() { file }));
}
});
if (_rdfStoreConnector.HasGraph(graphName))
foreach (var kv in graphAccumulation)
{
_rdfStoreConnector.ClearGraph(graphName);
var graph = kv.Value.Item1;
var graphName = kv.Key.ToString();
var currentGraph = Helpers.WrapRequest(() => _rdfStoreConnector.GetGraph(graphName));
var graphWasChanged = graph.Triples.Count != currentGraph.Triples.Count
|| graph.Triples.Any((triple) => !currentGraph.Triples.Any((currentTriple) =>
(triple.Subject.Equals(currentTriple.Subject) || (triple.Subject.NodeType == NodeType.Blank && currentTriple.Subject.NodeType == NodeType.Blank)
&& triple.Predicate.Equals(currentTriple.Predicate)
&& triple.Object.Equals(currentTriple.Object) || (triple.Object.NodeType == NodeType.Blank && currentTriple.Object.NodeType == NodeType.Blank))));
if (graphWasChanged)
{
if (!currentGraph.IsEmpty)
{
Helpers.WrapRequest(() => _rdfStoreConnector.ClearGraph(graphName));
_logger.LogInformation("Cleared Graph {graphName}", graphName);
}
else
......@@ -107,8 +132,18 @@ public class Program
_logger.LogInformation("No Graph {graphName}", graphName);
}
foreach (var file in kv.Value.Item2)
{
var fileInfo = new FileInfo(file);
queries.Add($"ld_dir('{fileInfo.DirectoryName[2..].Replace("\\", "/")}', '{fileInfo.Name}', '{graphName}');");
}
}
else
{
_logger.LogInformation("Skipping {graphName}", graphName);
}
}
queries.Add($"rdf_loader_run ();");
queries.Add($"DELETE from DB.DBA.load_list where 1=1;");
......