我有两个相同的控制台应用程序同时运行。 以下是C#代码
的执行情况IIgnite ignite = Ignition.Start(config);
ICache<int, string> cache = ignite.GetOrCreateCache<int, string>("CC");
如果我在GetOrCreateCache行放置断点并为两个应用程序启动dubuggering模式,则第一个正在运行的应用程序将触及断点,但不会触及第二个断点。第二个就是挂在那里。
我查了一下日志。它不断重复以下内容
Next node remains the same [nextId=d0bb3ac1-03ae-4833-b739-465c4e3db0d1, nextOrder=1]
Message has been sent to next node [msg=TcpDiscoveryHeartbeatMessage [super=TcpDiscoveryAbstractMessage [sndNodeId=26a833d1-7ca1-4482-9bf4-99fa837681ce, id=333395e7b51-d0bb3ac1-03ae-4833-b739-465c4e3db0d1, verifierNodeId=d0bb3ac1-03ae-4833-b739-465c4e3db0d1, topVer=0, pendingIdx=0, failedNodes=null, isClient=false]], next=d0bb3ac1-03ae-4833-b739-465c4e3db0d1, res=1]
Message has been received: TcpDiscoveryHeartbeatMessage [super=TcpDiscoveryAbstractMessage [sndNodeId=26a833d1-7ca1-4482-9bf4-99fa837681ce, id=333395e7b51-d0bb3ac1-03ae-4833-b739-465c4e3db0d1, verifierNodeId=d0bb3ac1-03ae-4833-b739-465c4e3db0d1, topVer=0, pendingIdx=0, failedNodes=null, isClient=false]]
Processing message [cls=TcpDiscoveryHeartbeatMessage, id=333395e7b51-d0bb3ac1-03ae-4833-b739-465c4e3db0d1]
Message has been added to queue: TcpDiscoveryHeartbeatMessage [super=TcpDiscoveryAbstractMessage [sndNodeId=26a833d1-7ca1-4482-9bf4-99fa837681ce, id=333395e7b51-d0bb3ac1-03ae-4833-b739-465c4e3db0d1, verifierNodeId=d0bb3ac1-03ae-4833-b739-465c4e3db0d1, topVer=0, pendingIdx=0, failedNodes=null, isClient=false]]
Discovery notification [node=TcpDiscoveryNode [id=4cd6f0f5-2f75-4375-97fa-b7f6e4e2c0cd, addrs=[0:0:0:0:0:0:0:1, 127.0.0.1, 172.30.29.142], sockAddrs=[EDISONCWRK2.meridianlink.com/172.30.29.142:47501, /0:0:0:0:0:0:0:1:47501, /127.0.0.1:47501], discPort=47501, order=4, intOrder=4, lastExchangeTime=1492473879345, loc=true, ver=1.9.0#20170302-sha1:0be92732, isClient=false], spiState=CONNECTED, type=NODE_METRICS_UPDATED, topVer=4]
有谁知道原因或如何解决问题? 我问这个问题是因为我正在一个团队中开展一个项目。 如果多个团队成员同时调试,可能会导致问题。
环境:Ignite.NET 1.9,Visual Studio 2015
答案 0 :(得分:1)
您的两个应用程序加入了同一个Ignite群集。当一个节点在断点处停止时,所有线程都将被挂起。此节点不再响应网络通信。这是导致其他节点挂起的原因 - 它等待响应。
您必须避免暂停一个应用并同时调试另一个应用。
至于团队合作,每个团队成员都应该在自己孤立的环境中工作,以避免干扰他人。这可以通过设置防火墙规则或通过这样调整IgniteConfiguration
来实现:
var c = new IgniteConfiguration
{
Localhost = "127.0.0.1",
DiscoverySpi = new TcpDiscoverySpi
{
IpFinder = new TcpDiscoveryStaticIpFinder
{
Endpoints = new[] {"127.0.0.1:47500"}
},
}
};