Skip to content
Snippets Groups Projects
  1. Mar 10, 2025
  2. Mar 07, 2025
    • Georges Racinet's avatar
      Merged stable branch into future · aa29732c
      Georges Racinet authored
      Part of heptapod#2078. As we are about to shift the future branch to be
      default and all changes in Heptapod 17.8 were made after the shit of the stable series,
      there is no point merging into the default branch first.
      aa29732c
    • Georges Racinet's avatar
      Compliance with Gitaly 17.9 · 09275380
      Georges Racinet authored
      The `DiffService.GetPatchID` gRPC method now invokes Git with `--verbatim` by
      default (feature flag is activate by default).
      09275380
  3. Mar 06, 2025
  4. Mar 01, 2025
  5. Feb 28, 2025
  6. Feb 26, 2025
  7. Feb 25, 2025
  8. Feb 24, 2025
    • Georges Racinet's avatar
      MercurialRepositoryService: new HouseKeeping method · 0c0c998b
      Georges Racinet authored
      We chose to make a single gRPC method with various subtasks,
      to leave the control to the Rails app (first instalment likely
      to run all subtasks) and make it easier to add new tasks in the
      future than implementing new methods (less boilerplate left)
      0c0c998b
    • Georges Racinet's avatar
      workdir: new cleanup 'remove_unlisted_workdirs' · 943df5de
      Georges Racinet authored
      As the docstring explains we've seen large stray working
      directories, not listed in the roster file and that is a real problem
      that should be handled by the housekeeping when it is plugged in.
      943df5de
    • Georges Racinet's avatar
      workdirs_gc: case of missing working directories · fe268009
      Georges Racinet authored
      If a working directory is listed in the roster but actually missing,
      this is an easily fixed inconsistency and we must not put it back
      in the roster
      fe268009
    • Georges Racinet's avatar
      workdirs_gc: less locking · 38e55b4d
      Georges Racinet authored
      Because some working directories are very large, their removal
      can take some time. We do not want to keep the lock on the roster
      file much longer than reserve/release take.
      
      Hence we switch to a multi-phase logic. In the first phase, the
      working directories scheduled for deletion are actually reserved,
      so that concurrent workers will ignore them. Once the removals are
      done, we lock again to remove them from the roster.
      38e55b4d
    • Georges Racinet's avatar
      workdirs_gc: roster file deduplication · df698653
      Georges Racinet authored
      Using `dict`s in `to_remove` values, we avoid attempting the
      removal of duplicated lines several times, and thus putting them
      back in the roster file.
      df698653
    • Georges Racinet's avatar
      workdir: fix unexpected growth bug · d1d1735d
      Georges Racinet authored
      In `release_workdirs`, the matching line was written twice, explaining
      the growth.
      
      However fixing that bug uncovered another one: in case two different working
      dirs were suitable in `roster_branch_match`, the first was actually discarded
      from the roster.
      
      This fixes both bugs, but does not clean up existing roster files, some of
      which can have thousands of lines instead of the expected couple.
      d1d1735d
  9. Feb 21, 2025
  10. Feb 20, 2025
  11. Feb 18, 2025
    • Georges Racinet's avatar
      RHGitaly MercurialAuxGitService.RepositorySize implementation · f40d540a
      Georges Racinet authored
      Fairly straightforward, thanks to the `walkdir` crate. It is worth
      noticing that `du -ks` gives a different result (92kB), whereas `du -bs` gives
      27kB, same as our implementation on our dev rig.
      It seems to be that `du -k` rounds up each file to 4kB (most probably block
      size), and it also seems to differ on system context.
      f40d540a
  12. Feb 17, 2025
  13. Feb 16, 2025
    • Georges Racinet's avatar
      RHGitaly AuxGitCreateFromBundle and aux Git repository restoration methods · 3663eb8c
      Georges Racinet authored
      As previously done for bundle generation, we're defining a specific method
      in `MercurialAuxGitService` and have `RepositoryService` detect automatically
      that it is working for an auxiliary Git repository, with the former giving
      a clear API for the client side (used in export/import) and the latter
      being the only option we have for backups restoration (via `gitaly-backup`).
      
      In `RepositoryService`, we had to implement `RemoveRepository`, `SetCustomHooks` and
      `FetchBundle` for the `gitaly-backup` restoration to work. We also did
      `CreateRepositoryFromBundle` for completeness.
      
      At this point, backup/restore and export/import do work with auxiliary
      Git repositories, yet it is validated by functional tests
      only and we didn't implement `CreateBundleFromRefsList`.
      
      This generally provides also the harness for handling all of this via
      RHGitaly, instead of HGitaly or subprocess spawning from the Rails application.
      All methods already have their HGitaly fallbacks, except `CreateRepositoryFromBundle`
      because it is a streaming request and it will be simpler to implement it rather than
      the fallback.
      3663eb8c
Loading