Проблемы при переподключении.
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  >
Maxim

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


Если это ко мне вопрос, то нет, у меня такого нет.
В _trader.Disconnected просто логируется информация.
Спасибо:

Garry

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


Аналогичная проблема, после попытки переподключения в логе ошибка
2013/01/15 12:44:09.353|Error |PlazaTrader|System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени. И все на этом стопорится.
Коннектор из S# 4.1.7 с кодплекса, роутер 1.4.11_32
logS#.txt 26 KB (209) LOGrouter.txt 3 MB (210)
Спасибо:

Alexander

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


Проблема известна и уже была занесена в список тасков ранее.
Спасибо:

Garry

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


Ну есть перспективы решения? просто уже 5 месяцев прошло, вроде довольно ходовой коннектор, а перезапускать робота, если пропадет инет как то не хотелось бы. Вот, может быть оно? http://forum.rts.micex.ru/viewtopic.asp?t=19453
Спасибо:

Alexander

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


Как только у разработчиков будет время - сразу сделаем.
Спасибо:

Garry

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


Посмотрел исходники, поэкспериментировал с проблемой, действительно роутер ведет себя как то странно после восстановления связи, постоянные ошибки

2013/02/17 13:34:38.102|Error |PlazaTrader|StockSharp.Plaza.PlazaException: Ошибка подключения к серверу Плазы. Код -2147196927, описание 'P2ERR_MQ_NOT_INITIALIZED_YET'. ---> System.Runtime.InteropServices.COMException: Couldn't connect to MQ

, хотя до этого все локальные соединения были корректно завершены. Возможно действительно проблема в Роутере(та что выше по ссылке на форум РТС). Рестарт роутера помогает, добавил Router.Restart(); в метод OnConnect() Плаза трейдера, пересобрал, все отлично восстанавливается. Но вот рестарт роутера при каждой попытке соединения, уж больно радикальное решение, хотя все же решение.
Спасибо:

Garry

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


Еще и в BaseTrader метод SafeDisconnect вызывает Disconnect(); без проверки (почему-то if (IsConnected) закоментарен) Соответсвенно ReConectionManager ждет события Trader.Disconnected, которого никогда не будет. Из-за этого вылезает ошибка таймаута:
2013/01/15 12:44:09.353|Error |PlazaTrader|System.TimeoutException: Соединение не было разорвано в отведенный отрезок времени.

private void SafeDisconnect()
{
try
{
//if (IsConnected)
Disconnect();
}
catch (Exception ex)
{
RaiseConnectionError(ex);
}
}
Спасибо:

Mikhail Sukhov

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


Garry Перейти
Еще и в BaseTrader метод SafeDisconnect вызывает Disconnect(); без проверки (почему-то if (IsConnected) закоментарен) Соответсвенно ReConectionManager ждет события Trader.Disconnected, которого никогда не будет. Из-за этого вылезает ошибка таймаута:


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

Garry

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


Оно приходит один раз, при разрыве связи, а ReConnectionManager, вызывает Trader.Reconnect через интервалы, в PlazaTrader метод Reconnect не определен, он определен только в BaseTrader
public virtual void Reconnect()
{
SafeDisconnect();
Connect();
}
SafeDisconnect(); вызывает Disconnect всегда т.к. IsConnected закоментарен. Disconnect опять же определен только в BaseTrader
public void Disconnect()
{
_reConnectionManager.Disconnect(() => RaiseConnectionError(new TimeoutException("Соединение не было разорвано в отведенный отрезок времени.")));
OnDisconnect();
}

т.е. ReConnectionManager ждет событие каждый раз при реконнекте, тут надо либо раскоментарить IsConnected или переопределить Disconnect() Reconnect() в PlazaTrader
Спасибо:

Mikhail Sukhov

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


Я совсем запутался.[sad]
Спасибо:
< 1 2 3  >

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

loading
clippy