Internal vs Public Git URL Separation (Repo Browser / JGit Failure) (SZ-93)
rk@tigase.net opened 4 days ago

JGit operations in ProjectGitController fail with:

org.eclipse.jgit.api.errors.TransportException:
http://git.sztab.local/git/{repo}.git: connection failed

Root cause: backend container cannot resolve or connect to git.sztab.local.

The system currently conflates: • Public clone URL (host-level DNS via reverse proxy) • Internal Docker service URL (container DNS) This results in backend attempting to use public hostname inside Docker network.

Root Cause Analysis 1. git.sztab.local is defined only in host /etc/hosts. 2. Backend runs inside Docker container. 3. Containers do not inherit host /etc/hosts. 4. Therefore JGit attempts to connect to an unreachable hostname. 5. Clone operation fails before authentication (network layer failure).

  • rk@tigase.net commented 4 days ago

    Work log: Design clarification (internal vs public URL separation, layering decision) ~45–60 minutes

    Configuration properties + binding + wiring ~30 minutes

    GitUrlMapper implementation (clean, tested) ~45 minutes

    Modify ProjectServiceImpl (store internal URL properly) ~30–45 minutes

    Adjust DTO mapping layer ~30 minutes

    Remove entity hack / clean up ~15 minutes

    Manual validation (repo creation, repo browser, clone test, external repo test) ~60–90 minutes

    Regression sanity check (basic flows) ~45–60 minutes

    Total realistic engineering time:

    4 to 6 hours

  • rk@tigase.net commented 4 days ago

    Proposed Fix

    1. Store internal clone URL when creating internal repositories.
    2. Introduce SztabGitProperties configuration.
    3. Add GitUrlMapper component to convert internal → public URL.
    4. Use internal URL exclusively for JGit operations.
    5. Expose public URL only in REST DTO responses.
    6. Remove any @Transient entity-based URL replacement logic.
  • rk@tigase.net commented 4 days ago
    rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout -b bug/sz93-Internal-vs-Public-Git-URL-Separation 
    Switched to a new branch 'bug/sz93-Internal-vs-Public-Git-URL-Separation'
    rksuma@Ramakrishnans-MacBook-Pro sztab % git branch -m bugfix/sz93-Internal-vs-Public-Git-URL-Separation
    rksuma@Ramakrishnans-MacBook-Pro sztab % 
    
    
    
  • rk@tigase.net changed state to 'In Progress' 4 days ago
    Previous Value Current Value
    Open
    In Progress
  • rk@tigase.net commented 3 days ago
    rksuma@Ramakrishnans-MacBook-Pro sztab % git status
    On branch bugfix/sz93-Internal-vs-Public-Git-URL-Separation
    Your branch is up to date with 'origin/bugfix/sz93-Internal-vs-Public-Git-URL-Separation'.
    
    nothing to commit, working tree clean
    rksuma@Ramakrishnans-MacBook-Pro sztab % git checkout wolnosc
    Switched to branch 'wolnosc'
    Your branch is up to date with 'origin/wolnosc'.
    rksuma@Ramakrishnans-MacBook-Pro sztab % git pull origin wolnosc
    From https://tigase.dev/sztab
     * branch            wolnosc    -> FETCH_HEAD
    Already up to date.
    rksuma@Ramakrishnans-MacBook-Pro sztab % git merge --no-ff bugfix/sz93-Internal-vs-Public-Git-URL-Separation
    
    Merge made by the 'ort' strategy.
     backend/src/main/java/com/sztab/config/SztabConfig.java                        | 39 +++++++++++++++++++++++++++++++++++++++
     backend/src/main/java/com/sztab/config/git/SztabGitProperties.java             | 40 ++++++++++++++++++++++++++++++++++++++++
     backend/src/main/java/com/sztab/controller/project/ProjectController.java      | 25 +++++++++++++++----------
     backend/src/main/java/com/sztab/dto/project/ProjectDto.java                    |  5 +++--
     backend/src/main/java/com/sztab/mapper/ProjectMapper.java                      | 25 +++++++++++++++++++++++++
     backend/src/main/java/com/sztab/mapper/git/GitUrlMapper.java                   | 47 +++++++++++++++++++++++++++++++++++++++++++++++
     backend/src/main/java/com/sztab/security/CustomUserDetailsService.java         |  3 +--
     backend/src/main/java/com/sztab/security/config/SessionAuthSecurityConfig.java |  9 ++-------
     backend/src/main/java/com/sztab/service/impl/ProjectServiceImpl.java           |  9 ++++++---
     backend/src/main/java/com/sztab/sztabina/client/impl/SztabinaClient.java       |  2 +-
     backend/src/main/resources/application-dev.yml                                 |  4 ++--
     backend/src/main/resources/application-session-auth.yml                        |  6 ++++++
     backend/src/main/resources/application.yml                                     | 14 ++++++++++++++
     backend/src/test/java/com/sztab/controller/project/ProjectControllerTest.java  | 21 ++++++++++++++++++++-
     backend/src/test/java/com/sztab/mapper/git/ProjectMapperTest.java              | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
     backend/src/test/java/com/sztab/service/ProjectServiceImplTest.java            | 11 ++++++++---
     deploy/docker/caddy/Caddyfile                                                  | 53 ++++++++++++++++++++++++++++++-----------------------
     deploy/docker/docker-compose.yml                                               | 23 +++++++++++++++++++----
     frontend/docker/Dockerfile                                                     | 11 ++++++++++-
     frontend/src/components/project/CreateProjectModal.tsx                         | 57 ++++++++++++++++++++++++++++++---------------------------
     frontend/src/components/project/ProjectCreatedModal.tsx                        |  5 ++++-
     frontend/src/config.ts                                                         |  5 +++++
     sztabina/handlers/git_http_handler.go                                          |  2 +-
     sztabina/handlers/repo_handler.go                                              | 42 +++++++++++++++++++++++++++++++++---------
     sztabina/util/utils.go                                                         | 10 ++++++++++
     25 files changed, 426 insertions(+), 97 deletions(-)
     create mode 100644 backend/src/main/java/com/sztab/config/SztabConfig.java
     create mode 100644 backend/src/main/java/com/sztab/config/git/SztabGitProperties.java
     create mode 100644 backend/src/main/java/com/sztab/mapper/ProjectMapper.java
     create mode 100644 backend/src/main/java/com/sztab/mapper/git/GitUrlMapper.java
     create mode 100644 backend/src/test/java/com/sztab/mapper/git/ProjectMapperTest.java
     create mode 100644 frontend/src/config.ts
    rksuma@Ramakrishnans-MacBook-Pro sztab % git push origin wolnosc
    Enumerating objects: 1, done.
    Counting objects: 100% (1/1), done.
    Writing objects: 100% (1/1), 272 bytes | 272.00 KiB/s, done.
    Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    To https://tigase.dev/sztab.git
       e88c515..f17ad54  wolnosc -> wolnosc
    rksuma@Ramakrishnans-MacBook-Pro sztab % 
    
    
  • rk@tigase.net changed state to 'Closed' 3 days ago
    Previous Value Current Value
    In Progress
    Closed
issue 1 of 1
Type
Bug
Priority
Blocker
Assignee
Version
none
Sprints
n/a
Customer
n/a
Issue Votes (0)
Watchers (3)
Reference
SZ-93
Please wait...
Page is in error, reload to recover