Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при одной транзакции / 18 сообщений из 18, страница 1 из 1
27.02.2015, 19:52
    #38891071
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
В базе запущены 4 читающих транзакции и одна пишущая
Код: sql
1.
SELECT * FROM tmp$transactions


TMP$TRANSACTION_IDTMP$ATTACHMENT_IDTMP$POOL_IDTMP$POOL_MEMORYTMP$TIMESTAMPTMP$SNAPSHOTTMP$QUANTUMTMP$SAVEPOINTSTMP$READONLYTMP$WRITETMP$NOWAITTMP$COMMIT_RETAININGTMP$STATETMP$PRIORITYTMP$TYPETMP$PAGE_READSTMP$PAGE_WRITESTMP$PAGE_FETCHESTMP$PAGE_MARKSTMP$RECORD_SELECTSTMP$RECORD_INSERTSTMP$RECORD_UPDATESTMP$RECORD_DELETESTMP$RECORD_PURGESTMP$RECORD_EXPUNGESTMP$RECORD_BACKOUTS8 33407454 09627.02.2015 18:27:09.0002 0000YNNNPRECOMMITTEDREAD COMMITTED1231922 2263 55900001 6640018 2311091 02427.02.2015 18:44:44.00000YNYNPRECOMMITTEDREAD COMMITTED0022000000018 222374425 60027.02.2015 18:41:07.00018 2222 0000NYNNACTIVEREAD COMMITTED1102 28740574064600708 338376812 28827.02.2015 18:27:10.0001 0000YYNNPRECOMMITTEDREAD COMMITTED4705 36522 5630000008 3321467 16827.02.2015 18:27:09.00000YNNNPRECOMMITTEDREAD COMMITTED2204322136000000


Эта пишущая транзакция выдает ошибку
deadlock update conflicts with concurrent update
как такое может быть?

С уважением, Vasilisk
...
Рейтинг: 0 / 0
27.02.2015, 20:02
    #38891081
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
_Vasilisk_как такое может быть?

транзакция 18222 все портит. вероятно, где-то затесался режим no_rec_version. в mon$ он не показывается.

p.s. чудес не бывает, сообщение выдает или не 18222, или ...
...
Рейтинг: 0 / 0
27.02.2015, 20:15
    #38891089
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
_Vasilisk_как такое может быть?
Транзакция 8338 выдала select for update with lock из-за чего у неё и отрос статус write.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2015, 20:25
    #38891096
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
kdvp.s. чудес не бывает, сообщение выдает или не 18222, или ...Она именно и выдает. В ней пытаюсь писать отгребаю ошибку
...
Рейтинг: 0 / 0
27.02.2015, 20:33
    #38891102
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
_Vasilisk_В ней пытаюсь писать отгребаю ошибку
Обычно в этой ошибке есть ещё и номер транзакции с которой она законфликтовала.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.02.2015, 20:40
    #38891106
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
Dimitry SibiryakovТранзакция 8338 выдала select for update with lock из-за чего у неё и отрос статус write.Это моя читающая транзакция. Осознано я такой оператор не вызывал.
kdvгде-то затесался режим no_rec_version.Я не вижу такого. 3 аттачмент - это проблемное соединение. 1 - используется только для прослушки событий, 10 - IBExpert. Я подключился ним уже после ошибки
...
Рейтинг: 0 / 0
27.02.2015, 21:49
    #38891137
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
_Vasilisk_,


Ты уверен, что там нет другой пишущей тр-ции ?
Ибо снапшот с tmp таблицами не обновляется в течение той тр-ции, в которой он был создан.

PS судя по обсуждению, IB тут никто не знает :)
...
Рейтинг: 0 / 0
27.02.2015, 21:49
    #38891138
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
kdvв mon$ он не показывается.А где ты видишь mon$ у автора ?
...
Рейтинг: 0 / 0
27.02.2015, 21:50
    #38891140
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
Dimitry SibiryakovОбычно в этой ошибке есть ещё и номер транзакции с которой она законфликтовала.
не в IB
...
Рейтинг: 0 / 0
27.02.2015, 21:51
    #38891141
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
Dimitry SibiryakovТранзакция 8338 выдала select for update with lock из-за чего у неё и отрос статус write.А что, в IB это есть ?
...
Рейтинг: 0 / 0
27.02.2015, 21:54
    #38891145
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
dimitrне в IB
А-а-а-а! Подловил.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
28.02.2015, 00:22
    #38891193
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
hvladТы уверен, что там нет другой пишущей тр-ции ?Я уже ни в чем не уверен, но второй транзакции быть не должно
hvladснапшот с tmp таблицами не обновляется в течение той тр-ции, в которой он был создан.Я рестартовал транзакцию в IBExpert для просмотра этой таблицы
...
Рейтинг: 0 / 0
28.02.2015, 00:24
    #38891195
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
hvladсудя по обсуждению, IB тут никто не знает :)Я прошу прощения за то, что дезориентировал сообщество. Я подобное поведение наблюдаю, действительно, в IB. 2009 и XE
...
Рейтинг: 0 / 0
28.02.2015, 00:52
    #38891201
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
hvladА где ты видишь mon$ у автора ?
виноват. мне пофиг, что tmp$, что mon$. Но в данном случае - не показывается в tmp$. В mon$ вроде бы подробности есть (вроде сам презентацию делал, не помню, надо глянуть).

_Vasilisk_Я подобное поведение наблюдаю, действительно, в IB. 2009 и XE
точные версии давай. последние - у 2009 это билд 9.0.4.443, у XE это билд 10.0.5.595. Ну и, воспроизводимую ситуацию тоже давай. не хочешь сюда - кидай на support@ibase.ru, я перепроверю.
...
Рейтинг: 0 / 0
28.02.2015, 02:38
    #38891212
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
kdvточные версии давай.В понедельник
kdvНу и, воспроизводимую ситуацию тоже давайС этим сложнее. Много чего участвует. В том числе допиленный IBX на две транзакции. Но я попробую повыпиливать куски кода. Или достаточно будет базы + экзешник без исходников?
...
Рейтинг: 0 / 0
28.02.2015, 02:51
    #38891216
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
_Vasilisk_,

мне не нужно приложение. мне нужен сценарий, т.е. последовательность действий для воспроизведения проблемной ситуации.
...
Рейтинг: 0 / 0
28.02.2015, 02:58
    #38891218
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
kdvмне нужен сценарий,Этого я не скажу. Проблема происходит при импорте данных из внешнего файла базу. Все файлы импортируются нормально, а вот один втыкается. Причем не сразу, а после импорта 14% записей в эту таблицу.

Попробую в понедельник чего-нибудь подшаманить
...
Рейтинг: 0 / 0
02.03.2015, 15:52
    #38892528
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock при одной транзакции
Баг локализован
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
SET SQL DIALECT 3;

CREATE TABLE MAIN (
    ID  INTEGER NOT NULL
);

ALTER TABLE MAIN ADD CONSTRAINT PK_MAIN PRIMARY KEY (ID);

INSERT INTO MAIN ("ID") VALUES (1);
INSERT INTO MAIN ("ID") VALUES (2);

SET TERM ^ ;

CREATE PROCEDURE sp_check_bug
AS
  DECLARE VARIABLE var_id INTEGER;
BEGIN
  FOR
    SELECT
      mn."ID"
    FROM
      main mn
    WHERE
      mn."ID" = 1
    INTO
      :var_id
    AS CURSOR
      cur_mn
  DO BEGIN
    UPDATE main mn SET
      mn."ID" = 2
    WHERE
      CURRENT OF cur_mn;

    WHEN GDSCODE unique_key_violation DO
      DELETE FROM
        main mn
      WHERE
        CURRENT OF cur_mn;
  END
END^

SET TERM ; ^

COMMIT WORK;

EXECUTE PROCEDURE sp_check_bug;



Вызов процедуры генерирует ошибку
deadlock
.
deadlock.
update conflicts with concurrent update.

Если заменить выделенную строку на
Код: sql
1.
mn."ID" = 1


то все работает

Сервер
Server Version: WI-V9.0.3.437
Server Implementation: InterBase/x86/Windows NT
Service Version: 2

и еще один
Server Version: WI-V11.0.2.540
Server Implementation: InterBase/x64/Windows
Service Version: 2


База в аттаче
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / deadlock при одной транзакции / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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