crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Забавный баг Postgres
Andrew Selivanov
  опции профиля:
сообщение 4.2.2008, 12:04
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

Спасибо сказали: 15 раз(а)




Репутация:   6  


При включенном антивирусе может возникать ошибка доступа к базе данных Postgres (да и вообще общая деградация производительности). Интересный фикс предложили авторы системы:
https://projects.commandprompt.com/public/p...changeset/29853
И привожу текст, на случай если ссылка побъется:
        while ((h = CreateFile(fileName, 
75    80        /* cannot use O_RDONLY, as it == 0 */
76    81                          (fileFlags & O_RDWR) ? (GENERIC_WRITE | GENERIC_READ) :
…    …    
89    94                            NULL)) == INVALID_HANDLE_VALUE)
90    95        {
91                 _dosmaperr(GetLastError());
    96            /*
    97             * Sharing violation or locking error can indicate antivirus, backup
    98             * or similar software that's locking the file. Try again for 30 seconds
    99             * before giving up.
    100             */
    101            DWORD err = GetLastError();
    102            if (err == ERROR_SHARING_VIOLATION ||  
    103                err == ERROR_LOCK_VIOLATION)
    104            {
    105                pg_usleep(100000);
    106                loops++;
    107    
    108    #ifndef FRONTEND
    109                if (loops == 50)
    110                    ereport(LOG,
    111                        (errmsg("could not open file \"%s\": %s", fileName,  
    112                          (err == ERROR_SHARING_VIOLATION)?_("sharing violation"):_("lock violation")),
    113                         errdetail("Continuing to retry for 30 seconds."),
    114                         errhint("You may have antivirus, backup or similar software interfering with the database.")));
    115    #endif
    116    
    117                if (loops < 300)
    118                    continue;
    119            }
    120    
    121            _dosmaperr(err);
92    122            return -1;
93    123        }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.4.2024, 0:47