Sync with svn fails when creating TAG in Gitlab

Hi All,
We work with a docker image - gitlab 14.2.1-ee and subgit 3.3.11. We have synchronized git and svn. When trying to create a Label (annotated with Release) in the Gitlab-UI we are facing an error in pre-receive-hook log of subgit. We changed the core setting, according the error message - no effect. Leaving the text empty in Gitlab-UI will create the tag. Any Idea?

[2021-08-26 09:44:36.717][pre-receive] Received '(formatted-error (1746:UNRECOVERABLE ERROR:
Missing unknown 3cf6d948f46781597cbb30e5f6fd9b1d251fe806CURRENT STATE:
Git object 3cf6d948f46781597cbb30e5f6fd9b1d251fe806 can’t be accessed in the Git repository /var/opt/gitlab/git-data/repositories/@hashed/a5/12/a512db2741cd20693e4b16f19891e72b9ff12cead72761fc5e92d2aaf34740c1.git.POSSIBLE REASONS:
1) Git server is out of memory, available disk space,
processes count, or open files limits;
2) When pushing through SSH, the system user on behalf of which.
SubGit daemon is running is not allowed to read files created by SSH user.
TO RECOVER:
1) Make sure Git server has enough memory, disk resources AND high enough
open handler and processes count limits.
2) When pushing through SSH, either
A) make sure the SSH user is the same user on behalf of which the SubGit is running
AND
is the same as the system user which is the owner of the Git repository; OR
B) set ‘core.shared’ option to ‘true’ in SubGit configuration file, run
$ subgit install “/var/opt/gitlab/git-data/repositories/@hashed/a5/12/a512db2741cd20693e4b16f19891e72b9ff12cead72761fc5e92d2aaf34740c1.git”
to apply changes and make sure the owner of the Git repository and SSH user
belong to the same system group.
For details regarding sharing Git repository for a system group see:
Git - git-config Documentation Once you have (1) and (2) fixed, retry push.TO REPORT:
1) Get error log from the server at
‘/var/opt/gitlab/git-data/repositories/@hashed/a5/12/a512db2741cd20693e4b16f19891e72b9ff12cead72761fc5e92d2aaf34740c1.git/subgit/logs’ 2) Report an issue at https://support.tmatesoft.com/THANK YOU!
2327:org.tmatesoft.translator.util.i: UNRECOVERABLE ERROR:
Missing unknown 3cf6d948f46781597cbb30e5f6fd9b1d251fe806

Hi Josef,

the Missing unknown error happens when SubGit expects to find some object in the repository, but the object is not there. This, in turn, may happen when SubGit has not enough permissions to write or read the object from the filesystem or when the object is just absent what may happen, for example, due to storage or filesystem issues or when another software removes them for some reason. The first thing I would recommend to take a look at is the file permissions and which users GitLab and SubGit are running – is that the same user for both applications or different ones? If those are different users, then this might be the cause as SubGit may not be able to read objects GitLab creates. Then, I’ve got a question about your setup – is it the same container where GitLab and SubGit are running or are they in different containers? The latter setup is not supported as SubGit not only requires direct access to the filesystem that stores the repositories, but it also must be running on the same machine where GitLab is running, otherwise it won’t be able to perform all the tasks and such a setup may also lead to issues and errors like this one.
If that is not permissions, filesystem, or file removing issue, then it will need a deeper investigation, we would need all the SubGit logs from that affected repository. Also, could you advise if that only happens in a single repository or more repositories are affected?

Hi Ildar
Thanx for ur reply. Subgit and Gitlab are running in the same container. In general sync is working fine, the problem only occurs as said, when creating a Tag in the Gitlab-UI (annotated Tag which leads to an release in Gitlab). So, as far as we can say it is not a permission or filesystem issue.
It happens on every repo on which we try to create an Tag. Leaving the message empty in gitlab (no annotaded Tag), its working.
regards
Josef

Hi Josef,

thank you for the information.
May I ask you to describe how exactly are you creating those tags in GitLab UI? Also, do I understand correctly you mean that there’s CI/CD pipeline that start build on the tag creation? Or, if not, could you please describe this one as well. And also, if possible, could you please share SubGit logs from one of the affected repositories for analysis?

Hi Ildar,

pls see attachments.

There is no CI/CD Pipeline triggered within Gitlab (switched off). Gitlab just tries to create a ZIP File with the created Tag.

Regards

Josef

pre-receive-hook.0.log (13.2 KB)

daemon.1.7z (606 KB)

Hi Josef,

thank you for the clarification.

It looks GitLab team has introduced some internal changes in v.14 that cause this issue. We are working to fix them permanently in the next SubGit version. Meanwhile, here is a workaround that allows overcoming this issue:

  • in the custom_hooks directory in an affected repository remove or rename both fast-pre-receive and fast-post-receive hooks

  • edit the pre-receive hook adding the following line

     export GIT_QUARANTINE_PATH=$GIT_OBJECT_DIRECTORY
    

    right above this line:

     if [ -x "$C_HOOK" ] ; then
    

    save the edited hook.

This change will allow SubGit to get all the needed information GitLab changes in v.14 and thus will resolve the issue. I will let you know as we release the new version that does not need such a workaround to be made.