Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement / 19 сообщений из 19, страница 1 из 1
02.03.2014, 18:39:48
    #38576387
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
hi all

WI-V2.5.3.26726
Код: sql
1.
2.
3.
4.
5.
6.
recreate table t(id int primary key);
create sequence g;
commit;
insert into t select gen_id(g,1) from rdb$types,rdb$types;
commit;
exit;



Далее создаю скрипт, в котором в бесконечном цикле:
1) делается прямое обращение к базе, через select from rdb$database (просто чтобы точно знать, что мы действительно ХОДИМ в базу);
2) делается попытка вставки строки с нарушением ПК, исключение намеренно подавляется:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
-- file = `pk_violator.sql`
set term ^;
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='insert into t(id) values(1)';
  while(1=1) do
    begin
      select 1 from rdb$database into i;
      execute statement stt;
      when any do begin end
    end
end^
set term ;^
commit;

Затем запускаю isql, коннект по ТСР, с этим скриптом:
Код: plaintext
isql localhost/3253:C:\FBTESTING\MISCELAN\T0.FDB -n -i pk_violator.sql

Жду примерно 2-3 минуты, после чего срубаю isql клавишей Ctrl-C. Далее жду еще 30 минут, наивно надеясь, что ФБ прекратит обслуживание вышепоказанного EB.

И вижу в итоге, что:
1) ФБ продолжает молотить, как ни в чём не бывало. Ядро загружено на 97-99%. Потребляемая память, хотя и очень медленно, но - растёт(!)
2) трейс показывает бесконечную молотьбу, - но! - в нём виден только проблемный инсерт, а вот обращения к rdb$database - нету!
trace.conf.parameters
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
  enabled true
  log_context true


#  log_filename zaudit.log
  log_connections true
  log_transactions true

 log_statement_prepare true
  log_statement_free true

  log_statement_start true
  log_statement_finish true
#  log_procedure_finish true

  log_trigger_start true
  log_trigger_finish true

  log_blr_requests true

  log_errors true
  log_sweep true


  print_plan true
  print_perf true
#  print_blr true

  time_threshold 0
  max_sql_length 3000
  max_blr_length 1000
  max_dyn_length 1000
  max_log_size 0
trace.output.log
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
Trace session ID 2 started
2014-03-02T18:30:32.7500 (3624:0223DEB0) TRACE_INIT

        SESSION_2  


2014-03-02T18:30:32.7500 (3624:0223DEB0) EXECUTE_STATEMENT_START

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)



2014-03-02T18:30:32.7500 (3624:0223DEB0) FAILED EXECUTE_STATEMENT_FINISH

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)

0 records fetched

      0 ms, 27 fetch(es), 5 mark(s)



Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge

***************************************************************************************************************

RDB$INDICES                                       1                                                            

RDB$RELATION_CONSTRAINTS                          1                                                            

T                                                                     1                   1                    



2014-03-02T18:30:32.7650 (3624:0223DEB0) ERROR AT jrd8_execute

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

335544665 : violation of PRIMARY or UNIQUE KEY constraint "INTEG_6" on table "T"


2014-03-02T18:30:32.7650 (3624:0223DEB0) EXECUTE_STATEMENT_START

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)



2014-03-02T18:30:32.7650 (3624:0223DEB0) FAILED EXECUTE_STATEMENT_FINISH

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)

0 records fetched

      0 ms, 27 fetch(es), 5 mark(s)



Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge

***************************************************************************************************************

RDB$INDICES                                       1                                                            

RDB$RELATION_CONSTRAINTS                          1                                                            

T                                                                     1                   1                    



2014-03-02T18:30:32.7650 (3624:0223DEB0) ERROR AT jrd8_execute

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

335544665 : violation of PRIMARY or UNIQUE KEY constraint "INTEG_6" on table "T"


2014-03-02T18:30:32.7650 (3624:0223DEB0) EXECUTE_STATEMENT_START

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)



2014-03-02T18:30:32.7650 (3624:0223DEB0) FAILED EXECUTE_STATEMENT_FINISH

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)

0 records fetched

      0 ms, 27 fetch(es), 5 mark(s)



Table                             Natural     Index    Update    Insert    Delete   Backout     Purge   Expunge

***************************************************************************************************************

RDB$INDICES                                       1                                                            

RDB$RELATION_CONSTRAINTS                          1                                                            

T                                                                     1                   1                    



2014-03-02T18:30:32.7650 (3624:0223DEB0) ERROR AT jrd8_execute

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

335544665 : violation of PRIMARY or UNIQUE KEY constraint "INTEG_6" on table "T"


2014-03-02T18:30:32.7650 (3624:0223DEB0) EXECUTE_STATEMENT_START

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)



Statement 38:

-------------------------------------------------------------------------------

insert into t(id) values(1)



2014-03-02T18:30:32.7650 (3624:0223DEB0) FAILED EXECUTE_STATEMENT_FINISH

        C:\FBTESTING\MISCELAN\T0.FDB (ATT_14, SYSDBA:NONE, NONE, TCPv4:127.0.0.1)

        C:\1INSTALL\FIREBIRD\FB25SNAP\bin\isql.exe:2336

                (TRA_206, CONCURRENCY | WAIT | READ_WRITE)
3) мониторинг подтверждает, что введенный запрос до сих пор считается активным:
mon$statements
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
C:\1INSTALL\FIREBIRD\FB25SNAP>isql localhost/3253:C:\FBTESTING\MISCELAN\T0.FDB -n
Database:  localhost/3253:C:\FBTESTING\MISCELAN\T0.FDB
SQL> set list on; commit; select * from mon$statements where mon$attachment_id<>current_connection;

MON$STATEMENT_ID                38
MON$ATTACHMENT_ID               14
MON$TRANSACTION_ID              <null>
MON$STATE                       0
MON$TIMESTAMP                   <null>
MON$SQL_TEXT                    0:4
insert into t(id) values(1)
MON$STAT_ID                     7

MON$STATEMENT_ID                35
MON$ATTACHMENT_ID               14
MON$TRANSACTION_ID              206
MON$STATE                       1
MON$TIMESTAMP                   2014-03-02 18:10:36.6400
MON$SQL_TEXT                    0:6
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='insert into t(id) values(1)';
  while(1=1) do
    begin
      select 1 from rdb$database into i;
      execute statement stt;
      when any do begin end
    end
end
MON$STAT_ID                     8
ТСР-параметры в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:
Код: plaintext
1.
KeepAliveTime = 15000 (и это ведь  милли секунды, так ?)
KeepAliveInterval = 1000

Так работают эти параметры в ФБ 2.5 или нет ? Почему ФБ игнорирует факт срубания коннекта, хотя коннект выполняет вообще-то обращение к базе, т.е. это не какой-то вырожденный случай типа while (1=1) do i=1.

PS. Параметр KEEPALIVE_PROBES почему-то в регистре ОТСУТСТВУЕТ (хз, может это "по дефолту" так ? :)). Какое значение тогда будет использовано в формуле KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL, приведенной в статье с сайта IBPhoenix ?
...
Рейтинг: 0 / 0
02.03.2014, 22:22:10
    #38576425
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
ТаблоидПараметр KEEPALIVE_PROBES почему-то в регистре ОТСУТСТВУЕТ (хз, может это "по дефолту" так ? :)). Какое значение тогда будет использовано в формуле KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL, приведенной в статье с сайта IBPhoenix ?Этот параметр в виндузе зовётся TcpMaxDataRetransmissions, его дефолт = 5.
Я поставил его = 3, перегрузил комп. Коннект делал что по localhost, что с указанием "нормального" адреса 192.168.0.100 - бестолку.
Попробовал поставить в Фб-конфиге также DummyPacketInterval = 20 - пофиг, результат одинаковый.
Но! Если дать скрипту работать менее 15 сек, то его срубание таки отслеживается сервером. А вот если 45 сек - уже нет.
Загадко как бэ... %-/
...
Рейтинг: 0 / 0
03.03.2014, 00:46:32
    #38576464
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
WI-T3.0.0.30855 (SuperClassic): то же самое, ФБ не реагирует на обрубание аттача, если оно произошло позже, чем через ~30 сек с начала выполнения скрипта.

Однако, в mon$statements теперь видны *две* записи, причём активным считается только execute block, а сам инсерт, пытающийся вломить дубликат записи, имеет MON$STATE = 0:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> commit; select row_number()over(), s.* from mon$statements s where mon$attachment_id<>current_connection;

ROW_NUMBER                      1
MON$STATEMENT_ID                18
 MON$ATTACHMENT_ID               3 
MON$TRANSACTION_ID              11
MON$STATE                       1
MON$TIMESTAMP                   2014-03-03 00:37:01.0780
MON$SQL_TEXT                    0:2
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='insert into t(id) values(1)';
  while(1=1) do
    begin
      select 1 from rdb$database into i;
      execute statement stt;
      when any do begin end
    end
end
MON$STAT_ID                     7

ROW_NUMBER                      2
MON$STATEMENT_ID                24
 MON$ATTACHMENT_ID               3 
MON$TRANSACTION_ID              <null>
MON$STATE                       0
MON$TIMESTAMP                   <null>
MON$SQL_TEXT                    0:3
insert into t(id) values(1)
MON$STAT_ID                     8

К ночи становится всё интереснее и чудесатее...
...
Рейтинг: 0 / 0
03.03.2014, 00:52:36
    #38576466
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
LI-T3.0.0.30889: проблемы нет, ФБ просёк отруб tcp-коннекта практически мгновенно.
...
Рейтинг: 0 / 0
03.03.2014, 10:51:30
    #38576593
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
давай не будем путаться в терминах. Никакого отстрела коннекта тут нет. Соответственно, TCP-настройки и dummy-интервал тут вообще никаким боком. Ctrl-C это отмена выполнения текущего запроса.

а проблема в том, что в ситуации, когда прерывается EXEUTE STATEMENT, ошибка проглатывается WHEN-блоком. В обычных же ситуациях этого не происходит (и не должно).
...
Рейтинг: 0 / 0
03.03.2014, 11:41:05
    #38576633
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
dimitrкогда прерывается EXEUTE STATEMENT, ошибка проглатывается WHEN-блоком. В обычных же ситуациях этого не происходит (и не должно).почему отсутствие реакции на срубание происходит только при условии, что он отработает не менее 30 сек, и только на виндузе ?
PS. Проверил на варианте, когда перехватывается более конкретный sqlcode / gdscode
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
set term ^;
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='insert into t(id) values(1)';
  while(1=1) do
    begin
      select 1 from rdb$database into i;
      execute statement stt;
      when sqlcode -803 do begin end
    end
end^
set term ;^
commit;

-- или так:
set term ^;
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='insert into t(id) values(1)';
  while(1=1) do
    begin
      select 1 from rdb$database into i;
      execute statement stt;
      when gdscode unique_key_violation do begin end
    end
end^
set term ;^
commit;

- да, так и есть: прерывание EB будет в этом случае отслеживаться сразу.

PS2. Интересная картина видна в ProcessExplorer'e через 40 сек после старта - см аттач.
...
Рейтинг: 0 / 0
03.03.2014, 12:13:18
    #38576665
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
Таблоидпочему отсутствие реакции на срубание происходит только при условии, что он отработает не менее 30 сек, и только на виндузе ?
понятия не имею. Прерывание будет работать, если наткнется на селект и не будет, если на exec stmt. Почему так карта ложится в разрезе до/после 30 сек - ХЗ.
...
Рейтинг: 0 / 0
03.03.2014, 12:16:42
    #38576668
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
кстати, на 3.0.0.30882 проблема точно также присутствует
...
Рейтинг: 0 / 0
03.03.2014, 12:27:04
    #38576685
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
dimitrкстати, на 3.0.0.30882 проблема точно также присутствуетэто ты на LINUX'e проверял ?
...
Рейтинг: 0 / 0
03.03.2014, 12:33:24
    #38576690
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
да. Измени свой скрипт, чтобы внутри ES был EB с бесконечным циклом - и все, delete from mon$statements (либо ctrl-c) нифига не останавливает скрипт.
...
Рейтинг: 0 / 0
03.03.2014, 12:55:56
    #38576731
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
dimitrИзмени свой скрипт, чтобы внутри ES был EB с бесконечным цикломух ты!... до такого я еще не додумкивал... :-)))
Однако, такой вот скрипт:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set term ^;
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='execute block as declare k int; begin while (1=1) do select count(*) from rdb$types,rdb$types into k; end';
  execute statement stt;
end^
set term ;^
commit;


- срубается "на ура" через delete from mon$attachments.

--------------

Кстати, очередная загадко.
Когда такой скрипт выполняется, то:
Код: plaintext
SQL> set list on; commit; select * from mon$ statements  where mon$attachment_id<>current_connection;
- выдаёт две строки и в обеих mon$state = 1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
MON$STATEMENT_ID                132
MON$ATTACHMENT_ID               51
MON$TRANSACTION_ID              249
MON$STATE                       1
MON$TIMESTAMP                   2014-03-03 12:51:55.8900
MON$SQL_TEXT                    0:4
execute block as declare k int; begin while (1=1) do select count(*) from rdb$types,rdb$types into k; end
MON$STAT_ID                     7

MON$STATEMENT_ID                124
MON$ATTACHMENT_ID               51
MON$TRANSACTION_ID              249
MON$STATE                       1
MON$TIMESTAMP                   2014-03-03 12:51:55.8900
MON$SQL_TEXT                    0:6
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='execute block as declare k int; begin while (1=1) do select count(*) from rdb$types,rdb$types into k; end';
  execute statement stt;
end
MON$STAT_ID                     8


Ну так вот: если выполнить теперь
Код: plaintext
1.
2.
SQL> commit; delete from mon$statements where mon$attachment_id<>current_connection;
SQL> commit; select * from mon$statements where mon$attachment_id<>current_connection;
- то:
1) в mon$statements по-прежнему видим эти же два активных стейтмента:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
MON$STATEMENT_ID                132
MON$ATTACHMENT_ID               51
MON$TRANSACTION_ID              249
MON$STATE                       1
MON$TIMESTAMP                   2014-03-03 12:51:55.8900
MON$SQL_TEXT                    0:4
execute block as declare k int; begin while (1=1) do select count(*) from rdb$types,rdb$types into k; end
MON$STAT_ID                     7

MON$STATEMENT_ID                124
MON$ATTACHMENT_ID               51
MON$TRANSACTION_ID              249
MON$STATE                       1
MON$TIMESTAMP                   2014-03-03 12:51:55.8900
MON$SQL_TEXT                    0:6
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='execute block as declare k int; begin while (1=1) do select count(*) from rdb$types,rdb$types into k; end';
  execute statement stt;
end
MON$STAT_ID                     8
Повторный ввод этой пары команд ничего не меняет: mon$statements по-прежнему показывает, что якобы имеются два активных стейтмента.

2) загрузка ЦПУ при вводе delete from mon$stt сразу же падает в ноль, т.е. вроде бы выполнение действительно прекращается.

PS. Выполнение вышеприведенного скрипта в ProcessExplorer'e уже НЕ содержало в графике загрузки ЦПУ "красноты", как ранее - см. аттач. Терзает смутное сомнение, что наличие или отсутствие реакции ФБ на срубание как-то связано именно с этой "краснотой"...
...
Рейтинг: 0 / 0
03.03.2014, 12:59:21
    #38576741
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
Таблоидесли выполнить теперь
Код: plaintext
1.
2.
SQL> commit; delete from mon$statements where mon$attachment_id<>current_connection;
SQL> commit; select * from mon$statements where mon$attachment_id<>current_connection;
- то:
1) в mon$statements по-прежнему видим эти же два активных стейтмента:Забыл добавить: хотя ЦПУ "сбросился" в ноль и по всем признакам видно, что ФБ ничего не делает, коннект НЕ завершается, т.е. он где-то "взвис" внутри бесконечного цикла в ES ( while (1=1) ), но и не делает там ничего!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set term ^;
execute block as
declare stt varchar(255);
declare i int;
begin
  stt='execute block as declare k int; begin  while (1=1)  do select count(*) from rdb$types,rdb$types into k; end';
  execute statement stt;
end^
set term ;^
commit;
...
Рейтинг: 0 / 0
03.03.2014, 13:09:35
    #38576758
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
dimitrда. Измени свой скрипт, чтобы внутри ES был EB с бесконечным циклом - и все, delete from mon$statements (либо ctrl-c) нифига не останавливает скрипт.delete from mon$ATTACHMENTS имеет тот же эффект: загрузка ЦПУ сразу падает в ноль, но скрипт НЕ возвращает управление в ось. И аттач от него по-прежнему виден в mon$attachments, да и mon$statements такой же.
...
Рейтинг: 0 / 0
03.03.2014, 13:18:29
    #38576775
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
ты вообще читаешь, что тебе пишут? Какой нафиг delete from mon$attachments , если разговор про mon$statements ? Или ты опять с одной темы на другую перескакиваешь? Куда ты из скрипта выкинул WHEN-блок, прячущий ошибку? В болото, ей богу.
...
Рейтинг: 0 / 0
03.03.2014, 13:43:21
    #38576805
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
dimitr,

приведи свой скрипт, плз.
...
Рейтинг: 0 / 0
03.03.2014, 13:44:15
    #38576808
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
...
Рейтинг: 0 / 0
03.03.2014, 13:47:11
    #38576815
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
Хорошо, с when-блоком понятно всё: это он, гад, виноват.
Что тогда с этим - оно из другой уже оперы ?
...
Рейтинг: 0 / 0
03.03.2014, 13:58:58
    #38576832
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
Таблоид,

"это" я в тройке не могу воспроизвести, у меня управление возвращается в консоль
...
Рейтинг: 0 / 0
03.03.2014, 14:06:53
    #38576845
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
dimitr"это" я в тройке не могу воспроизвести, у меня управление возвращается в консольда, это только в 2.5 такое (у мну WI-V2.5.3.26726).
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]