Имя: Пароль:
1C
1С v8
Взаимные блокировки
0 Широкий
 
15.05.12
13:37
Не могу придумать, как смоделировать сие.
При этом режим блокировки конфы управляемый и без программных блокировок
1 Широкий
 
15.05.12
14:01
ап
2 Лоботряс
 
15.05.12
14:05
Два документа с прямым и обратным порядком проведения по нескольким регистрам.
3 Широкий
 
15.05.12
14:21
(2) Тут максимум что будет - это превышено время ожидания транзакции
4 Stepa86
 
15.05.12
14:27
(3) как раз дедлок и будет
5 Широкий
 
15.05.12
14:28
(4) в (0) "При этом режим блокировки конфы управляемый и без программных блокировок"
Точно ли ?
6 Stepa86
 
15.05.12
14:32
(5) ну регистры то лочаться при записи по любому
7 Широкий
 
15.05.12
14:35
(6) Только на время чтения/записи
8 Stepa86
 
15.05.12
14:42
конфа: http://dl.dropbox.com/u/67530172/1Cv8.dt

запускаешь 2 сеанса, один из них в отладке

ставишь в одном доке точку останова после записи первого регистра, проводишь док, чтоб встало на нее

во втором сеансе запускаешь проведение второго дока,

как там все подвисает, F5 в отладчике - http://screencast.com/t/E6Geve28kGdp
9 Лоботряс
 
15.05.12
14:44
режим транзакции ведь READ-WRITE по-любому
10 Широкий
 
15.05.12
15:06
(8) Спасибо
11 Stepa86
 
15.05.12
15:14
(10) обращайся, чо =)
12 Широкий
 
15.05.12
15:34
(11) В файловов и серверном варианте уровни изоляции одинаковы?
13 Stepa86
 
15.05.12
15:43
14 Лоботряс
 
15.05.12
15:43
(12)  разные, насколько я помню
15 rs_trade
 
15.05.12
15:45
(9) че за режим такой?
16 Лоботряс
 
15.05.12
16:03
(15)разрешены чтение и модификация записей
17 Лоботряс
 
15.05.12
16:04
а два READ-WRITE в один момент времени существовать не могут
18 Широкий
 
15.05.12
16:29
(13) Ну значит если убрать автоматическую очистку движухи и принудительную запись наборов записей - то в скуле блокировка не возникнет (по крайне мере исходя из твоего пример)
19 Stepa86
 
15.05.12
16:34
(18) должно возникнуть, если по одному и тому же набору измерений писать
20 Широкий
 
15.05.12
16:36
(19) Думаешь возникнет? Движуху то мы отдаем 1с записывать
21 Stepa86
 
15.05.12
16:46
(20) ну чтоб наверняка, можно еще проверку на отрицательные значения воткнуть после каждой записи... залочит по набору с вероятностью в 146%.

Так же по умолчанию скуль вроде б по диапазону лочит, это если не прописывать блокировку данных в 1Ске.

а вообще от анализа дедлоков на теоретическом уровне у меня крышу сносит постоянно
22 Широкий
 
15.05.12
16:56
(21) В твоем примере дедлок вознкает потому, что в каждом документе дважды принудительно записываем набор записей. Если между этими записями вклинится - то пичаль, т.в файловом варианте блокировки накидываются на таблицу.

Если же сделать как в (18).. То наборы записываются один раз. Перехлеста не будет.. Плюс в скуле блокировки на запиь и считывание данных запросом блокировку не делает
23 Stepa86
 
15.05.12
17:03
(22) >>считывание данных запросом блокировку не делает

делают. Защита от фантомов.

Если убрать принудительную запись наборов, то дедлоков есессно не будет, так как не будет взаимозахвата ресурсов, и этого дедлока даж в файловой не будет
24 Широкий
 
15.05.12
17:07
(23) Read commited, но после отработки запроса она снимается
25 Stepa86
 
15.05.12
17:10
(24) пофик когда снимается, главное, что ставиться и может привести к пичальке
26 Широкий
 
15.05.12
17:15
(25) Не могу придумать как такое возможно
27 Stepa86
 
15.05.12
17:27
(26) у меня было, простой запрос с ГДЕ таблица.Реквизит = &Реквизит лочил таблицу при чтении. Решилось тогда добавлением индекса на этот реквизит. Чо там происходило уже не помню
28 Широкий
 
15.05.12
17:32
(27) Он и лочит.. но не до дедлока. а индекс добавил - просто быстрее данные полуать стал
29 Stepa86
 
15.05.12
17:38
(28) разница в скорости там была незначительная, а ЦУПом и тест-центром я это дело нормально так гонял - до 50 одновременных потоков в одни и те же данные. и там был точно дедлок, а не таймаут
30 МихаилМ
 
15.05.12
19:16
то, что в 2005 было deadlock d 2008.. - timeuot
31 Широкий
 
17.05.12
14:23
Подниму тему..
В серверном варианте без программных блокировок так и не удалось дед-лок получить