Проблемы при переподключении.
Atom
01.08.2012


Всем добрый день.

Запускаем коннектор.
Коннектор работает нормально.
Во время работы отключаем плаза роутер, ждем некоторое время, включаем роутер обратно.
Коннектор восстанавливает соединение с роутером, получает данные секунд 15, а после этого отключается.

Собственный лог с момента восстановления соединения:
Код

Datetime	Message	Details	Status	Thread
2012-08-01 15:28:15.5047430	Log	System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени.	Info   	14
2012-08-01 15:28:15.5027430	ConnectionError	"Message: Соединение не было разорвано в отведенный отрезок времени.; TargetSite: ; Source: ; StackTrace: ; "	Error  	14
2012-08-01 15:28:15.4997430	Log	RaiseConnectionError - disconnected	Info   	14
2012-08-01 15:28:15.4967420	Log	OnConnectionStatusChanged: conn OrderLog_2 - status: Disconnected	Info   	14
2012-08-01 15:28:15.4437370	Log	OnConnectionStatusChanged: conn OrderLog_1 - status: Disconnected	Info   	14
2012-08-01 15:28:15.3467270	Disconnected	NULL	Info   	14
2012-08-01 15:28:15.3467270	Log	OnConnectionStatusChanged: conn OrderLog_0 - status: Disconnected	Info   	14
2012-08-01 15:27:45.2922170	ConnectionRestored	NULL	Info   	14
2012-08-01 15:27:37.3362170	Log	PlazaStream FORTS_OPTINFO_REPL:StreamStateChanged: State Online	Info   	17
2012-08-01 15:27:37.0272170	Log	PlazaStream FORTS_FUTINFO_REPL:StreamStateChanged: State Online	Info   	17
2012-08-01 15:27:36.7302170	Log	PlazaStream FORTS_OPTCOMMON_REPL:StreamStateChanged: State Online	Info   	17
2012-08-01 15:27:35.9932170	Log	PlazaStream FORTS_FUTCOMMON_REPL:StreamStateChanged: State Online	Info   	17
2012-08-01 15:27:35.6812170	Log	PlazaStream FORTS_OPTINFO_REPL:StreamStateChanged: State RemoveSnapshot	Info   	17
2012-08-01 15:27:35.6702170	Log	PlazaStream FORTS_OPTINFO_REPL:StreamLifeNumChanged: LifeNum 2748	Info   	17
2012-08-01 15:27:35.6582170	Log	PlazaStream FORTS_OPTINFO_REPL:StreamStateChanged: State ReOpenned	Info   	17
2012-08-01 15:27:35.6462170	Log	PlazaStream FORTS_OPTCOMMON_REPL:StreamStateChanged: State RemoveSnapshot	Info   	17
2012-08-01 15:27:35.6332170	Log	PlazaStream FORTS_OPTCOMMON_REPL:StreamLifeNumChanged: LifeNum 27254	Info   	17
2012-08-01 15:27:35.6232170	Log	PlazaStream FORTS_OPTCOMMON_REPL:StreamStateChanged: State ReOpenned	Info   	17
2012-08-01 15:27:35.6092170	Log	PlazaStream FORTS_FUTCOMMON_REPL:StreamStateChanged: State RemoveSnapshot	Info   	17
2012-08-01 15:27:35.5972170	Log	PlazaStream FORTS_FUTCOMMON_REPL:StreamLifeNumChanged: LifeNum 27256	Info   	17
2012-08-01 15:27:35.5872170	Log	PlazaStream FORTS_FUTCOMMON_REPL:StreamStateChanged: State ReOpenned	Info   	17
2012-08-01 15:27:35.5752170	Log	PlazaStream FORTS_FUTINFO_REPL:StreamStateChanged: State RemoveSnapshot	Info   	17
2012-08-01 15:27:35.5612170	Log	PlazaStream FORTS_FUTINFO_REPL:StreamLifeNumChanged: LifeNum 2748	Info   	17
2012-08-01 15:27:35.5562170	Log	PlazaStream FORTS_FUTINFO_REPL:StreamStateChanged: State ReOpenned	Info   	17
2012-08-01 15:27:35.5172170	Log	PlazaStream FORTS_OPTCOMMON_REPL:Поток FORTS_OPTCOMMON_REPL переоткрыт.	Info   	17
2012-08-01 15:27:35.5132170	Log	PlazaStream FORTS_OPTCOMMON_REPL:StreamStateChanged: State LocalSnapshot	Info   	17
2012-08-01 15:27:35.5032170	Log	PlazaStream FORTS_ORDLOG_REPL:StreamStateChanged: State RemoveSnapshot	Info   	18
2012-08-01 15:27:35.5012170	Log	PlazaStream FORTS_OPTCOMMON_REPL:Состояние потока Closed.	Info   	17
2012-08-01 15:27:35.4922170	Log	PlazaStream FORTS_FUTCOMMON_REPL:Поток FORTS_FUTCOMMON_REPL переоткрыт.	Info   	17
2012-08-01 15:27:35.4892170	Log	PlazaStream FORTS_FUTCOMMON_REPL:StreamStateChanged: State LocalSnapshot	Info   	17
2012-08-01 15:27:35.4882170	Log	PlazaStream FORTS_FUTCOMMON_REPL:Состояние потока Closed.	Info   	17
2012-08-01 15:27:35.4852170	Log	PlazaStream FORTS_OPTINFO_REPL:Поток FORTS_OPTINFO_REPL переоткрыт.	Info   	17
2012-08-01 15:27:35.4752170	Log	PlazaStream FORTS_ORDLOG_REPL:StreamStateChanged: State RemoveSnapshot	Info   	18
2012-08-01 15:27:35.4672170	Log	PlazaStream FORTS_OPTINFO_REPL:Состояние потока Closed.	Info   	17
2012-08-01 15:27:35.4672170	Log	PlazaStream FORTS_OPTINFO_REPL:StreamStateChanged: State LocalSnapshot	Info   	17
2012-08-01 15:27:35.4662170	Log	PlazaStream FORTS_FUTINFO_REPL:Поток FORTS_FUTINFO_REPL переоткрыт.	Info   	17
2012-08-01 15:27:35.4592170	Log	PlazaStream FORTS_FUTINFO_REPL:Состояние потока Closed.	Info   	17
2012-08-01 15:27:35.4592170	Log	PlazaStream FORTS_FUTINFO_REPL:StreamStateChanged: State LocalSnapshot	Info   	17
2012-08-01 15:27:35.4562170	Log	PlazaStream FORTS_OPTCOMMON_REPL:Инициализация FORTS_OPTCOMMON_REPL потока.	Info   	17
2012-08-01 15:27:35.4542170	Log	PlazaStream FORTS_ORDLOG_REPL:Поток FORTS_ORDLOG_REPL переоткрыт.	Info   	18
2012-08-01 15:27:35.4532170	Log	PlazaStream FORTS_FUTCOMMON_REPL:Инициализация FORTS_FUTCOMMON_REPL потока.	Info   	17
2012-08-01 15:27:35.4512170	Log	PlazaStream FORTS_ORDLOG_REPL:StreamStateChanged: State LocalSnapshot	Info   	18
2012-08-01 15:27:35.4482170	Log	PlazaStream FORTS_OPTINFO_REPL:Инициализация FORTS_OPTINFO_REPL потока.	Info   	17
2012-08-01 15:27:35.4452170	Log	PlazaStream FORTS_ORDLOG_REPL:Состояние потока Closed.	Info   	18
2012-08-01 15:27:35.4392170	Log	PlazaStream FORTS_FUTINFO_REPL:Инициализация FORTS_FUTINFO_REPL потока.	Info   	17
2012-08-01 15:27:35.4392170	Log	PlazaStream FORTS_ORDLOG_REPL:Инициализация FORTS_ORDLOG_REPL потока.	Info   	18
2012-08-01 15:27:35.4382170	Log	Attempted to connect OrderLog_1.	Info   	17
2012-08-01 15:27:35.4382170	Log	Attempted to connect OrderLog_2.	Info   	18
2012-08-01 15:27:35.4332170	Log	Экспорт запущен.	Info   	11
2012-08-01 15:27:35.4042170	Log	Экспорт не был запущен.	Info   	11
2012-08-01 15:27:35.4042170	Log	Запуск экспорта.	Info   	11
2012-08-01 15:27:35.4032170	Log	Остановка экспорта.	Info   	11
2012-08-01 15:27:35.4002170	Log	OnConnectionStatusChanged: conn OrderLog_0 - status: Connected, RouterConnected	Info   	15
2012-08-01 15:27:35.3992170	Connected	NULL	Info   	15
2012-08-01 15:27:35.3032170	Log	OnConnect	Info   	12
2012-08-01 15:27:35.3022170	Log	Attempted to connect OrderLog_0.	Info   	12
2012-08-01 15:27:35.2902170	Log	OnDisconnect	Info   	12


Лог плаза клиента с момента восстановления соединения:
Код

2012-08-01 15:28:14.857;P2ReplStorage;;Changed revs at commit; stream 0x1D758B10; cnt 1
2012-08-01 15:28:14.857;P2ReplStorage;;	tbl_idx 0; rev range 365732 - 365736
2012-08-01 15:28:14.944;p2repl-cli;;DATA message received;stream 0x1D757C70
2012-08-01 15:28:14.947;P2ReplStorage;;Changed revs at commit; stream 0x1D757C70; cnt 1
2012-08-01 15:28:14.947;P2ReplStorage;;	tbl_idx 0; rev range 1565619 - 1565633
2012-08-01 15:28:15.064;p2repl-cli;;DATA message received;stream 0x1D757C70
2012-08-01 15:28:15.064;P2ReplStorage;;Changed revs at commit; stream 0x1D757C70; cnt 1
2012-08-01 15:28:15.064;P2ReplStorage;;	tbl_idx 0; rev range 1565634 - 1565636
2012-08-01 15:28:15.183;P2ReplStorage;;Changed revs at commit; stream 0x1D0256C0; cnt 1
2012-08-01 15:28:15.183;P2ReplStorage;;	tbl_idx 0; rev range 13160814170 - 13160815579
2012-08-01 15:28:15.184;p2repl-cli;;DATA message received;stream 0x1D0256C0
2012-08-01 15:28:15.191;p2repl-cli;;DATA message received;stream 0x1D758B10
2012-08-01 15:28:15.194;P2ReplStorage;;Changed revs at commit; stream 0x1D758B10; cnt 1
2012-08-01 15:28:15.194;P2ReplStorage;;	tbl_idx 0; rev range 365737 - 365749
2012-08-01 15:28:15.194;p2repl-cli;;DATA message received;stream 0x1D757C70
2012-08-01 15:28:15.195;P2ReplStorage;;Changed revs at commit; stream 0x1D757C70; cnt 1
2012-08-01 15:28:15.195;P2ReplStorage;;	tbl_idx 0; rev range 1565637 - 1565643
2012-08-01 15:28:15.336;p2repl-cli;;DATA message received;stream 0x1D757C70
2012-08-01 15:28:15.337;P2ReplStorage;;Changed revs at commit; stream 0x1D757C70; cnt 1
2012-08-01 15:28:15.337;P2ReplStorage;;	tbl_idx 0; rev range 1565644 - 1565650
2012-08-01 15:28:15.345;P2ClientGate;;Statistics module was unregistered, module name P2ClientGate@CP2Connection
2012-08-01 15:28:15.345;p2mq-cli;;Socket closed;conn 0x1CF84710
2012-08-01 15:28:15.443;P2ClientGate;;Statistics module was unregistered, module name P2ClientGate@CP2Connection
2012-08-01 15:28:15.443;p2mq-cli;;Socket closed;conn 0x1CF5E8B0
2012-08-01 15:28:15.496;P2ReplStorage;;Changed revs at commit; stream 0x1D0256C0; cnt 1
2012-08-01 15:28:15.496;P2ReplStorage;;	tbl_idx 0; rev range 13160815580 - 13160816989
2012-08-01 15:28:15.496;P2ClientGate;;Statistics module was unregistered, module name P2ClientGate@CP2Connection
2012-08-01 15:28:15.496;p2mq-cli;;Socket closed;conn 0x1CF5EC90



Подозрение падает на строчки:
«2012-08-01 15:28:15.443;P2ClientGate;;Statistics module was unregistered, module name P2ClientGate@CP2Connection»


Почему при обычном коннекте все работает нормально, а при разрыве связи и последующем реконекте работает все плохо?
Помогите, пожалуйста, разобраться.

Теги:


Спасибо:


< 1 2 3 
Garry

Фотография
Дата: 20.02.2013
Ответить


Ну я тоже не сразу разобрался. Суть в том что, PlazaTrader выдает событие Disconnect 1 раз при обрыве связи, а ReConnectionMasnager ждет его каждый раз при переподключении, поэтому вылезает таймаут. Соответсвенно выхода 2, выдавать его либо не ждать.
Спасибо:

Garry

Фотография
Дата: 20.02.2013
Ответить


В общем кому интересно, выкладываю вариант с рабочим переподключением (исправил как сам думаю). Протестировал. Изменил всего 2 метода(жирный шрифт).

1-PlazaTrader.cs Перезапуск роутера при соединении:

protected override void OnConnect()
{
// Для удобства проверяем, запущен ли P2MQRouter.exe?
// Если это не делать, COM-библиотека Плазы будет выкидывать одну и ту же ошибку ('Couldn't resolve MQ service'),
// и когда P2MQRouter.exe не запущен,
// и когда нет связи с сервером Плазы или не ведутся торги.

//if (_connectionPool.IsLocal && Router.Status != ServiceControllerStatus.Running)
// throw new InvalidOperationException("На компьютере не установлена или не запущена программа P2MQRouter.exe.");
Router.Restart();
while (Router.Status != System.ServiceProcess.ServiceControllerStatus.Running)
{
System.Threading.Thread.Sleep(200);
}

_transactionManager.Start();

_connectionPool.Connect();

this.AddInfoLog("OnConnect");
}


2 - PlazaConnectionPool.cs принудительный вызов события disconnected при вызове метода Disconnect()


public void Disconnect()
{
_connectDone = false;
ChangeConnection(Disconnect);
_disconnected();
IsConnected = false;

}
PlazaTrader.cs 73 KB (179) PlazaConnectionPool.cs 15 KB (200)
Спасибо: Mikhail Sukhov Самунджян Артем
< 1 2 3 

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy