Открыть боковую панель
postgres
Odyssey
Коммиты
ca9ecafb
Коммит
ca9ecafb
создал
10 мес. назад
по автору
reshke
Просмотр файлов
Настройки
Скачать
Email-патчи
Простое отличие
fix
владелец
bceb52d1
huwef
Не найдено связанных запросов на слияние
Изменения
1
Скрыть пробелы
Построчно
Рядом
Отображение
1 измененного файла
sources/frontend.c
+46
-42
sources/frontend.c
с
46 дополнений
и
42 удаления
+46
-42
sources/frontend.c
+
46
-
42
Просмотр файла @
ca9ecafb
...
...
@@ -1744,60 +1744,64 @@ static od_frontend_status_t od_frontend_remote(od_client_t *client)
}
server
->
parse_msg
=
NULL
;
if
(
!
deployed
)
{
/* client expects parse complete, send it */
/* process to see parse reponse. */
machine_msg_t
*
msg
;
msg
=
kiwi_fe_write_sync
(
NULL
);
if
(
msg
==
NULL
)
{
status
=
OD_ESERVER_WRITE
;
break
;
}
rc
=
od_write
(
&
server
->
io
,
msg
);
if
(
rc
==
-
1
)
{
status
=
OD_ESERVER_WRITE
;
break
;
}
machine_msg_t
*
pmsg
;
pmsg
=
kiwi_be_write_parse_complete
(
NULL
);
if
(
pmsg
==
NULL
)
{
status
=
OD_ECLIENT_WRITE
;
break
;
}
machine_iov_add
(
server
->
relay
.
iov
,
pmsg
);
}
else
{
/* process to see parse reponse. */
machine_msg_t
*
msg
;
msg
=
kiwi_fe_write_sync
(
NULL
);
if
(
msg
==
NULL
)
{
status
=
OD_ESERVER_WRITE
;
break
;
}
rc
=
od_write
(
&
server
->
io
,
msg
);
if
(
rc
==
-
1
)
{
status
=
OD_ESERVER_WRITE
;
/* enter sync point mode */
server
->
sync_point
=
1
;
/* cleanup from previous runs */
server
->
sync_point_parse
=
0
;
od_server_sync_request
(
server
,
1
);
while
(
1
)
{
if
(
od_server_synchronized
(
server
))
{
break
;
}
// await here
/* enter sync point mode */
server
->
sync_point
=
1
;
od_log
(
&
instance
->
logger
,
"sync-point"
,
client
,
server
,
"process await"
);
status
=
od_frontend_remote_process_server
(
server
,
client
,
true
);
/* cleanup from previous runs */
server
->
sync_point_parse
=
0
;
od_server_sync_request
(
server
,
1
);
if
(
status
!=
OD_OK
)
{
break
;
}
}
while
(
1
)
{
if
(
od_server_synchronized
(
server
)
)
{
break
;
}
// await here
server
->
sync_point
=
0
;
if
(
status
!=
OD_OK
)
{
break
;
}
/* sync point ok */
od_log
(
&
instance
->
logger
,
"sync-point"
,
client
,
server
,
"process await"
);
status
=
od_frontend_remote_process_server
(
server
,
client
,
true
);
if
(
!
deployed
)
{
/* client expects parse complete, send it */
if
(
status
!=
OD_OK
)
{
break
;
}
machine_msg_t
*
pmsg
;
pmsg
=
kiwi_be_write_parse_complete
(
NULL
);
if
(
pmsg
==
NULL
)
{
status
=
OD_ECLIENT_WRITE
;
break
;
}
server
->
sync_point
=
0
;
if
(
status
!=
OD_OK
)
{
rc
=
od_write
(
&
client
->
io
,
pmsg
);
if
(
rc
==
-
1
)
{
status
=
OD_ECLIENT_WRITE
;
break
;
}
/* sync point ok */
}
else
{
/* has prepared statement parse succeseded?
* If it does not, empty internals structs.
*/
...
...
This diff is collapsed.
Click to expand it.
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать
Меню
Проекты
Группы
Сниппеты