Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 4118 - Не работает CIFS на новой сборке   Make a simular bug
Summary: Не работает CIFS на новой сборке
Status: CLOSED FIXED
Alias: None
Product: CIFS@Etersoft
Classification: Продукты (Products)
Component: блокировки файлов и доступ (show other bugs)
Version: не указана
Hardware: PC All
: P2 critical
Target Milestone: ---
Assignee: Александр Морозов
QA Contact: Денис Баранов
URL:
Whiteboard:
Keywords:
Depends on: 4132
Blocks: 3043 493 3589
  Show dependency treegraph
 
In work:
Reported: 2009-07-16 21:12 MSD by Денис Баранов
Modified: 2009-07-31 13:10 MSD (History)
1 user (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Денис Баранов 2009-07-16 21:12:06 MSD
Перестали правильно работать блокировки.
winelocktest дает след результаты:
Master:
winelocktest -m
Check Laraka_testC77 in single user mode...
Checked: This filesystem in usual, case sensitivity mode
Start test as MASTER for lockfile.wine file...
Info: Running on CIFS filesystem
             G_R   G_R   G_R   G_W   G_W   G_W G_R|W G_R|W G_R|W
             S_R   S_W S_R|W   S_R   S_W S_R|W   S_R   S_W S_R|W
       G_R

Slave:
winelocktest -s
Check L:\baraka_test\1C77 in single user mode...
Checked: This filesystem in usual, case sensitivity mode
Start test as SLAVE for lockfile.wine file...
Test failed: couldn't create file "lockfile.wine" (err=4): Too many open files
Test failed: couldn't create file "lockfile.wine" (err=4): Too many open files
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WINE LOCK TEST FAILED for /net/wine/bottles/1c77/.wine-1c77-eter29/dosdevices/l:/baraka_test/1C77! (see table above)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Comment 1 Александр Морозов 2009-07-17 16:22:10 MSD
Проблему с работой слэйва и мастера winelocktest на одной машине можно решить, если не открывать дополнительный файловый дескриптор (который используется для работы с блокировками на nfs) и устанавливать блокировку в set_unix_lock так, как это делалось раньше.

Но после этих исправлений winelocktest в одиночном режиме всё ещё работает не совсем неправильно:

             G_R   G_R   G_R   G_W   G_W   G_W G_R|W G_R|W G_R|W
             S_R   S_W S_R|W   S_R   S_W S_R|W   S_R   S_W S_R|W

       G_R   lVL   F.    lVL   F.    F.    F.    F.    F.    F.
       S_R

       G_R   F.    F.    F.    lVL   F. Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[1, 2] - 2[2, 3]
  modes   =
  80000000/2/40000000/3
   Fo    F.    F.    F.
       S_W

       G_R   lVL   F.    lVLTest failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[1, 3] - 2[2, 1]
  modes   =
  80000000/3/40000000/1
   Fo    F. Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[1, 3] - 2[2, 3]
  modes   =
  80000000/3/40000000/3
   Fo Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[1, 3] - 2[3, 1]
  modes   =
  80000000/3/c0000000/1
   Fo    F. Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[1, 3] - 2[3, 3]
  modes   =
  80000000/3/c0000000/3
   Fo
     S_R|W

       G_W   F.    lVL   Fo    F.    F.    F.    F.    F.    F.
       S_R

       G_W   F.    F.    F.    F.    lVL   lVL   F.    F.    F.
       S_W

       G_W   F.    lVL   Fo    F. Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[2, 3] - 2[2, 2]
  modes   =
  40000000/3/40000000/2
   Fo    lVL   F. Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[2, 3] - 2[3, 2]
  modes   =
  40000000/3/c0000000/2
   Fo Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
  Windows XP GetLastError() = 0, but now it is 4.
  indexes = 1[2, 3] - 2[3, 3]
  modes   =
  40000000/3/c0000000/3
   Fo
     S_R|W

     G_R|W   F.    F.    lVL   F.    F.    F.    F.    F.    F.
       S_R

     G_R|W   F.    F.    F.    F.    F.    lVL   F.    F.    F.
       S_W

     G_R|W   F.    F.    lVL   F.    F.    lVL   F.    F.    lVL
     S_R|W
Comment 2 Александр Морозов 2009-07-17 17:42:59 MSD
От ошибки
> Test failed: Windows 95 sets GetLastError() = ERROR_SHARING_VIOLATION and
>   Windows XP GetLastError() = 0, but now it is 4.
можно избавиться, если не вызывать set_concurlock в том случае, когда не удалось открыть файл.
Comment 3 Александр Морозов 2009-07-17 19:16:27 MSD
Собрал 25/17. В одиночном режиме (без -s/-m) тоже наблюдаются ошибки:

       G_R   lVL   F.    lVL   F.    F.    F.    F.    F.    F.
       S_R

       G_R   F.    F.    F.    lVL   F.    Fo    F.    F.    F.
       S_W

       G_R   lVL   F.    lVL   Fo    F.    Fo    Fo    F.    Fo
     S_R|W

       G_W   F.    lVL   Fo    F.    F.    F.    F.    F.    F.
       S_R

       G_W   F.    F.    F.    F.    lVL   lVL   F.    F.    F.
       S_W

       G_W   F.    lVL   Fo    F.    Fo    lVL   F.    Fo    Fo
     S_R|W

     G_R|W   F.    F.    lVL   F.    F.    F.    F.    F.    F.
       S_R

     G_R|W   F.    F.    F.    F.    F.    lVL   F.    F.    F.
       S_W

     G_R|W   F.    F.    lVL   F.    F.    lVL   F.    F.    lVL
     S_R|W

Так что можно считать, что регрессия исправлена.
Comment 4 Александр Морозов 2009-07-20 15:07:27 MSD
Проблему с неудачным открытием файла (Fo в тесте) можно решить, если для CIFS закрывать файловые дескрипторы сразу, не ожидая, когда будут закрыты все дескрипторы для данного файла.
Comment 5 Денис Баранов 2009-07-22 19:14:28 MSD
CIFS так и не стал нормально работать.
winelocktest в клиент-серверном варианте успешно завершается.
При проверке через 1С77 - обнаруживается сразу ошибка: при входе 2 пользователей в базу у одного их них в Журнале пользователей не показывается второй.

Так же winelocktest в одиночном варианте в большинстве случаев заканчивается неудачей:
$ winelocktest 
Check M:Checked: This filesystem in usual, case sensitivity mode
Start test as STANDALONE for lockfile.wine file...
Info: Running on CIFS filesystem
             G_R   G_R   G_R   G_W   G_W   G_W G_R|W G_R|W G_R|W
             S_R   S_W S_R|W   S_R   S_W S_R|W   S_R   S_W S_R|W
       G_R   lVL   F.    lVL   F.    F.    F.    F.    F.    F. 
       S_R
       G_R   F.    F.    F.    lVL   F.    lVL   F.    F.    F. 
       S_W
       G_R   lVL   F.    lVL   lVL   F.    lVL   lVL   F.    lVL
     S_R|W
       G_W   F.    lVL   lVL   F.    F.    F.    F.    F.    F. 
       S_R
       G_W   F.    F.    F.    F.    lVL   lVL   F.    F.    F. 
       S_W
       G_W   F.    lVL   lVL   F.    lVL   lVL   F.    lVL   lVL
     S_R|W
     G_R|W   F.    F.    lVL   F.    F.    F.    F.    F.    F. 
       S_R
     G_R|W   F.    F.    F.    F.    F.    lVL   F.    F.    F. 
       S_W
     G_R|W   F.    F.    lVL   F.    F.    lVL   F.    F.    lVL
     S_R|W
wine-etersoft  1.0.11-eter2.1ubuntu
wine-etersoft-sql  1.0.11-eter1ubuntu
Comment 6 Александр Морозов 2009-07-22 19:35:45 MSD
> Так же winelocktest в одиночном варианте в
> большинстве случаев заканчивается
> неудачей:
Где неудача?
Comment 7 Денис Баранов 2009-07-22 19:37:20 MSD
(In reply to comment #6)
> Где неудача?
> 
По табличке ошибки наблюдаются и в конце таблички следующее:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WINE LOCK TEST FAILED for /home/baraka/.wine/dosdevices/m:/cifs/baraka_test/Test_winelock! (see table above)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Comment 8 Александр Морозов 2009-07-23 16:35:26 MSD
> При проверке через 1С77 - обнаруживается
> сразу ошибка: при входе 2 пользователей в
> базу у одного их них в Журнале
> пользователей не показывается второй.

Да, проблема есть. Запускаем первую 1С:
etersoft_sharing_open: /net/wine/bottles/peoples/amorozov/.wine-1c77/dosdevices/g:/amorozov/1c_base/SYSLOG/links.tmp -> 449
set_unix_lock: 449 2000000 - 2000001 F_SETLK F_WRLCK: ok
set_unix_lock: 449 2000001 - 2000002 F_SETLK F_WRLCK: ok
set_unix_lock: 449 2000000 - 2000001 F_SETLK F_UNLCK: ok

Запускам вторую 1С:
etersoft_sharing_open: /net/wine/bottles/peoples/amorozov/.wine-1c77_2/dosdevices/e:/amorozov/1c_base/SYSLOG/links.tmp -> 260
set_unix_lock: 260 2000000 - 2000001 F_SETLK F_WRLCK: ok
set_unix_lock: 260 2000001 - 2000002 F_SETLK F_WRLCK: errno 13
set_unix_lock: 260 2000002 - 2000003 F_SETLK F_WRLCK: ok
set_unix_lock: 260 2000000 - 2000001 F_SETLK F_UNLCK: ok

Смотрим в ней список активных пользователей:
etersoft_sharing_open: /net/wine/bottles/peoples/amorozov/.wine-1c77_2/dosdevices/e:/amorozov/1c_base/SYSLOG/links.tmp -> 317
set_unix_lock: 317 2000000 - 2000001 F_SETLK F_RDLCK: ok
set_unix_lock: 317 2000001 - 2000002 F_GETLK: already locked
set_unix_lock: 317 2000000 - 2000001 F_SETLK F_UNLCK: ok
Видим двух пользователей.

Смотрим список активных пользователей в первой 1С:
etersoft_sharing_open: /net/wine/bottles/peoples/amorozov/.wine-1c77/dosdevices/g:/amorozov/1c_base/SYSLOG/links.tmp -> 68
set_unix_lock: 68 2000000 - 2000001 F_SETLK F_RDLCK: ok
set_unix_lock: 68 2000002 - 2000003 F_SETLK F_RDLCK: ok
set_unix_lock: 68 2000002 - 2000003 F_SETLK F_UNLCK: ok
set_unix_lock: 68 2000000 - 2000001 F_SETLK F_UNLCK: ok
Видим одного пользователя. Блокировка, установленная при запуске второй 1С исчезла.

Блокировка, устанавливаемая 1C при открытии базы, сбрасывается при получении в ней списка активных пользователей. В этом можно убедиться с помощью простой программы, получающей информацию об установленных блокировках с помощью F_GETLK.
Comment 9 Александр Морозов 2009-07-23 17:13:15 MSD
Блокировка сбрасывается при закрытии файлового дескриптора. Проблема со списком пользователей 1С исчезает, если откатить коммит
server: Close CIFS file descriptors immediately.
Но тогда появляется проблема с работой winelocktest в одиночном режиме: в некоторых случаях файлы не открываются, когда должны открываться.
Comment 10 Денис Баранов 2009-07-27 19:47:08 MSD
WINE@Etersoft 1.0.11 eter2.2/eter1, etercifs 4.3.8 eter1
1С7.7 работает без ошибок (блокировки работают).
winelocktest по прежнему сообщает об ошибках.
Comment 11 Денис Баранов 2009-07-30 20:44:13 MSD
WINE@Etersoft 1.0.11 eter4/eter3
Проверка winelocktest заканчивается успехом.