broken
Harald Wolff 2019-08-06 00:26:53 +02:00
parent 8c62f00e00
commit 5ce181a5fa
11 changed files with 117 additions and 61 deletions

View File

@ -143,9 +143,12 @@ namespace ln.skyscanner
webSocketInterface = new WebSocketInterface(rootResource, this);
RPCContainer.Add("", new SkyScannerRpc(this));
RPCContainer.Add("ServiceContainer",applicationInterface.ServiceContainer.RPC);
long nextCycle = DateTimeOffset.Now.ToUnixTimeMilliseconds();
Ready();
while (!StopRequested)
{
while ((nextCycle - DateTimeOffset.Now.ToUnixTimeMilliseconds()) < 0)
@ -199,6 +202,7 @@ namespace ln.skyscanner
}
}

View File

@ -45,7 +45,7 @@
<HintPath>..\packages\Google.Protobuf.3.8.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="MySql.Data">
<HintPath>..\packages\MySql.Data.8.0.16\lib\net452\MySql.Data.dll</HintPath>
<HintPath>..\packages\MySql.Data.8.0.17\lib\net452\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.ComponentModel" />

View File

@ -2,7 +2,7 @@
<packages>
<package id="BouncyCastle" version="1.8.5" targetFramework="net47" />
<package id="Google.Protobuf" version="3.8.0" targetFramework="net47" />
<package id="MySql.Data" version="8.0.16" targetFramework="net47" />
<package id="MySql.Data" version="8.0.17" targetFramework="net47" />
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net47" />
<package id="SSH.NET" version="2016.1.0" targetFramework="net47" />
</packages>

View File

@ -3,10 +3,18 @@ using ln.application;
using System.Threading;
using ln.logging;
using ln.application.service;
using ln.skyscanner.entities;
using ln.skyscanner.checks;
using System.Collections.Generic;
using ln.types.threads;
using System.Linq;
namespace ln.skyscanner.services
{
public class CheckService : ApplicationServiceBase
{
Pool checkPool;
public CheckService()
:base("Check Service")
{
@ -15,13 +23,20 @@ namespace ln.skyscanner.services
public override void ServiceMain(IApplicationInterface applicationInterface)
{
EntityService entityService = Dependency<EntityService>();
Dictionary<Node, CheckJob> checkJobs = new Dictionary<Node, CheckJob>();
HashSet<Node> currentNodes = new HashSet<Node>();
checkPool = new Pool(64);
long nextMinute = DateTimeOffset.Now.ToUnixTimeMilliseconds();
Ready();
while (!StopRequested)
{
/*
List<CheckJob> checkJobs = new List<CheckJob>();
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduler save CheckStates");
lock (saveQueue)
@ -32,17 +47,35 @@ namespace ln.skyscanner.services
}
saveQueue.Clear();
}
*/
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduler starts");
foreach (Node node in SkyScanner.Instance.Entities.NodeCollection)
currentNodes.Clear();
foreach (Node node in entityService.NodeCollection)
{
CheckJob checkJob = new CheckJob(node);
checkJobs.Add(checkJob);
currentNodes.Add(node);
if (!checkJobs.ContainsKey(node))
{
CheckJob checkJob = new CheckJob(node);
checkJobs.Add(node, checkJob);
}
}
foreach (Node node in checkJobs.Keys.ToArray())
{
currentNodes.Remove(node);
}
if (currentNodes.Count > 0)
{
foreach (Node node in currentNodes)
checkJobs.Remove(node);
}
currentNodes.Clear();
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): prepared {0} checks", checkJobs.Count);
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduled {0} checks", checkPool.Enqueue(checkJobs));
*/
Logging.Log(LogLevel.INFO, "SkyChecker.scheduler(): scheduled {0} checks", checkPool.Enqueue(checkJobs.Values));
while (true)
{

View File

@ -13,6 +13,10 @@ namespace ln.skyscanner.services
public override void ServiceMain(IApplicationInterface applicationInterface)
{
EntityService entityService = Dependency<EntityService>();
Ready();
}
}
}

View File

@ -80,6 +80,8 @@ namespace ln.skyscanner.services
Ready();
lock (Thread.CurrentThread)
{
Monitor.Wait(Thread.CurrentThread);

View File

@ -487,3 +487,12 @@ span#nWARN, span#nCRITICAL, span#nOK {
.issue-box:hover .performance-value {
height: 250px;
}
[bool=true] {
border: 1px solid white;
background-color: green;
}
[bool=false] {
border: 1px solid white;
background-color: red;
}

View File

@ -23,8 +23,9 @@
<body>
<script type="text/javascript">
$( document ).tooltip();
LN().rpc(null,"GetServerString",[],function(r){
alert(JSON.stringify(r));
$("#ServerString").text( r.result );
});
</script>
@ -46,12 +47,13 @@
<div id="indCrawler" class="indicator" state=""><div></div>Crawler</div>
<div id="indChecks" class="indicator" state=""><div></div>Checks</div>
<div id="indDispatcher" class="indicator" state=""><div></div>Message Dispatcher</div>
<div id="ServerTime" class="right"></div>
<div id="ServerString" class="right" style="margin-right: 12px;"></div>
<div id="ServerTime" class="right" style="margin-right: 12px;"></div>
</div>
</div>
<script type="text/javascript">
$("#header a").on( "click", function(e){ e.preventDefault(); skyapi().loadPage( $(this).attr('href') ); });
//$("#header a").on( "click", function(e){ e.preventDefault(); skyapi().loadPage( $(this).attr('href') ); });
</script>
</body>
</html>

View File

@ -1,8 +1,5 @@
<%frame "frame.html"%>
<!--
<div id="workspace">
<div id="wstabs"></div>
<div id="wsview"></div>
</div>
-->

View File

@ -32,22 +32,12 @@ function updateState(state)
}
}
/*
function SKYAPI(baseurl){
this.baseurl = baseurl;
this.refresh = []
/* this.websocket = new WebSocket("ws://localhost:8080/socket");
this.websocket.onerror = function(e){
alert("WebSocket Error: " + e);
}
this.websocket.onmessage = function(e){
var j = JSON.parse(e.data);
if (j.state){
updateState(j.state);
}
}
*/
this.setBaseURL = function(url){ this.baseurl = url; }
this.addRefresh = function( rh, seconds = null ){ this.refresh.push( { interval: seconds ? seconds : 5, refresh: rh } ); }
@ -199,6 +189,7 @@ function showStatistics(stats)
$("#indDispatcher").attr("title","UNKNOWN");
}
}
*/
function updateStatistics()
{
@ -211,16 +202,6 @@ function updateStatistics()
}
}
var __skyapi = new SKYAPI("/");
function skyapi()
{
return __skyapi;
}
function ScaleSI(value)
{
if (value > 1000000000)

View File

@ -25,28 +25,52 @@
</tr>
</table>
</div>
<div>
<h2>Services</h2>
<table id="ServiceTable">
<thead>
<tr>
<td>ServiceClass</td>
<td>Loaded</td>
<td>Alive</td>
<td>Ready</td>
<td></td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<script type="text/javascript">
$("#cbCrawlHosts").on("click", function(){ skyapi().call("api/crawler","ToggleCrawlHosts"); } );
$("#cbCrawlSubnets").on("click", function(){ skyapi().call("api/crawler","ToggleCrawlSubnets"); } );
// $("#cbCrawlHosts").on("click", function(){ skyapi().call("api/crawler","ToggleCrawlHosts"); } );
// $("#cbCrawlSubnets").on("click", function(){ skyapi().call("api/crawler","ToggleCrawlSubnets"); } );
skyapi().addRefresh(
function(){
skyapi().call(
"api/crawler",
"GetCrawlSubnets",
[],
function(r){
$("#cbCrawlSubnets").prop("checked", r);
} );
skyapi().call(
"api/crawler",
"GetCrawlHosts",
[],
function(r){
$("#cbCrawlHosts").prop("checked", r);
} );
},
1
);
function showServices(json){
if (json.result)
{
$("#ServiceTable > tbody").empty();
json.result.forEach(element => {
var row = $("<tr></tr>")
.attr("id",$.escapeSelector(element))
.append($("<td></td>").text(element));
$("#ServiceTable > tbody").append(row);
LN().rpc("ServiceContainer","GetServiceDefinition",[element,],function(json){
console.log(JSON.stringify(json));
row.append(
$("<td></td>").attr("bool",json.result.IsLoaded),
$("<td></td>").attr("bool",json.result.IsAlive),
$("<td></td>").attr("bool",json.result.IsReady)
);
});
});
}
};
LN().rpc("ServiceContainer","GetServiceNames",[],showServices);
</script>