Ошибка пост-фиксации Subversion: не удалось открыть базу данных rep-cache - PullRequest
0 голосов
/ 26 мая 2018

Я установил Apache2 / Subversion v1.9.3 на экземпляр Azure Ubuntu 16.04, используя описанный подход здесь .

Я настроил SSL в sites-available/[sitename].conf и могу подключитьсяудаленно используя Firefox и TortoiseSvn.

Если я создаю репо на локальной файловой системе сервера, все работает отлично - я могу импортировать файлы в репозиторий с помощью TortoiseSvn без ошибок.

Если заменить репо наодин, размещенный в хранилище файловой службы Azure, с:

sudo mount -t cifs //[].file.core.windows.net/svn /mnt/svn -o vers=3.0,username=[],password=[],dir_mode=0777,file_mode=0777,sec=ntlmssp,uid=www-data,gid=www-data

... отчетами SVN о черепахах post commit FS processing had error: Couldn't open rep-cache database

/var/log/apache/error.log содержит следующее:

[Sat May 26 15:12:00.994705 2018] [:error] [pid 11577:tid 140074997974784] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] Couldn't open rep-cache database
[Sat May 26 15:12:00.994745 2018] [:error] [pid 11577:tid 140074997974784] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] -Couldn't perform atomic initialization
[Sat May 26 15:12:00.994749 2018] [:error] [pid 11577:tid 140074997974784] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] -sqlite[S5]: database is locked, executing statement 'CREATE TABLE rep_cache (   hash TEXT NOT NULL PRIMARY KEY,   revision INTEGER NOT NULL,   offset INTEGER NOT NULL,   size INTEGER NOT NULL,   expanded_size INTEGER NOT NULL   ); PRAGMA USER_VERSION = 1; '
[Sat May 26 15:12:02.713630 2018] [:error] [pid 11577:tid 140075207550720] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] Couldn't open rep-cache database
[Sat May 26 15:12:02.713658 2018] [:error] [pid 11577:tid 140075207550720] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] -Couldn't perform atomic initialization
[Sat May 26 15:12:02.867911 2018] [:error] [pid 11577:tid 140075207550720] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] Couldn't open rep-cache database
[Sat May 26 15:12:02.867922 2018] [:error] [pid 11577:tid 140075207550720] (20014)Internal error (specific information not available): [client 77.144.98.30:55324] -Couldn't perform atomic initialization
[Sat May 26 15:12:03.801075 2018] [:error] [pid 11577:tid 140075207550720] (20014)Internal error (specific information not available): commit of r1 succeeded, but an error occurred after the commit: 'post commit FS processing had error:\nCouldn't open rep-cache database'

Этот вопрос , кажется, решает ту же проблему, однако мне не ясно, возможно ли изменить порядок загрузки модуля в Apache2, поскольку конфигурация модуля основана на содержимом mods-enabled/*.load.

Права доступа к файлам в директории репозитория представляются разумными ... хотя существует несколько файлов нулевого размера:

-rwxrwxrwx 1 www-data www-data     2 May 26 15:12 current
-rwxrwxrwx 1 www-data www-data    41 May 26 15:08 format
-rwxrwxrwx 1 www-data www-data 10178 May 26 15:08 fsfs.conf
-rwxrwxrwx 1 www-data www-data     5 May 26 15:08 fs-type
-rwxrwxrwx 1 www-data www-data     2 May 26 15:08 min-unpacked-rev
-rwxrwxrwx 1 www-data www-data     0 May 26 15:11 rep-cache.db
-rwxrwxrwx 1 www-data www-data     0 May 26 15:12 rep-cache.db-journal
drwxrwxrwx 2 www-data www-data     0 May 26 15:08 revprops
drwxrwxrwx 2 www-data www-data     0 May 26 15:08 revs
drwxrwxrwx 2 www-data www-data     0 May 26 15:08 transactions
-rwxrwxrwx 1 www-data www-data     2 May 26 15:11 txn-current
-rwxrwxrwx 1 www-data www-data     0 May 26 15:08 txn-current-lock
drwxrwxrwx 2 www-data www-data     0 May 26 15:08 txn-protorevs
-rwxrwxrwx 1 www-data www-data    74 May 26 15:08 uuid
-rwxrwxrwx 1 www-data www-data     0 May 26 15:08 write-lock

Однако, если возникла проблема спорядок загрузки модулей, я думаю, проблема возникнет, независимо от того, находится ли репозиторий в локальной или смонтированной файловой системе.

Это правильный подход для хранения данных репозитория Subversion в Azure?

Любое понимание или руководство о том, как лучше диагностировать / решить проблему, будет приветствоваться.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Это ограничение БД sqlite.По мере роста размера репо вы видите это.Я исправил это, разделив репозиторий SVN на более мелкие куски.

0 голосов
/ 26 мая 2018

Еще несколько тестов показывают, что проблема заключается в использовании файлового сервиса Azure для хранения данных хранилища Subversion.

Один из процессов в setup заключается в создании репо:

sudo svnadmin create /path/to/repo
sudo chown -R www-data:www-data /path/to/repo
sudo chmod -R g+ws /path/to/repo

Когда это выполняется на локальном (ext4?) Диске, db dir выглядит примерно так:

-rw-rwSr-- 1 www-data www-data     2 May 26 18:56 current
-r--rwSr-- 1 www-data www-data    41 May 26 18:54 format
-rw-rwSr-- 1 www-data www-data 10178 May 26 18:54 fsfs.conf
-rw-rwSr-- 1 www-data www-data     5 May 26 18:54 fs-type
-rw-rwSr-- 1 www-data www-data     2 May 26 18:54 min-unpacked-rev
-rw-rwSr-- 1 www-data www-data  3072 May 26 18:56 rep-cache.db
-rw-rw-r-- 1 www-data www-data     0 May 26 18:56 rep-cache.db-journal
drwxrwsr-x 3 www-data www-data  4096 May 26 18:54 revprops
drwxrwsr-x 3 www-data www-data  4096 May 26 18:54 revs
drwxrwsr-x 2 www-data www-data  4096 May 26 18:56 transactions
-rw-rwSr-- 1 www-data www-data     2 May 26 18:56 txn-current
-rw-rwSr-- 1 www-data www-data     0 May 26 18:54 txn-current-lock
drwxrwsr-x 2 www-data www-data  4096 May 26 18:56 txn-protorevs
-rw-rwSr-- 1 www-data www-data    74 May 26 18:54 uuid
-rw-rwSr-- 1 www-data www-data     0 May 26 18:54 write-lock

... который с флагами s / S отличается от содержимого каталога в файловой службе Azure (показано в вопросе).Не будучи экспертом по Linux, я предполагаю, что это функции, которые не поддерживаются файловой службой Azure .

Таким образом, мое решение заключается в создании и подключении диска с данными к ВМ , а затем раздел, отформатировать и смонтировать диск.Затем можно создать репо, как указано выше, и все работает как надо.

...