in internal/server/index_builder.go [36:87]
func (b DefaultIndexBuilder) IndexRepository(ctx context.Context, req IndexRequest, callbackFunc callback.CallbackFunc) error {
if req.GitalyConnectionInfo == nil {
return errors.New("gitalyConnectionInfo is not set")
}
if req.FileSizeLimit == 0 {
return errors.New("fileSizeLimit is not set")
}
timeout, err := time.ParseDuration(req.Timeout)
if err != nil {
return fmt.Errorf("failed to parse Timeout: %v with error %w", req.Timeout, err)
}
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
idx := &indexer.Indexer{
IndexDir: b.IndexDir,
ProjectID: req.RepoID,
GitalyAddress: req.GitalyConnectionInfo.Address,
GitalyStorageName: req.GitalyConnectionInfo.Storage,
GitalyToken: req.GitalyConnectionInfo.Token,
GitalyRelativePath: req.GitalyConnectionInfo.Path,
LimitFileSize: req.FileSizeLimit,
ForceReindex: req.Force,
Parallelism: req.Parallelism,
Writer: &indexer.DefaultIndexWriter{},
OnRetryableFailure: indexer.IndexingFailureFallback,
}
ctx = correlation.ContextWithCorrelation(ctx, correlation.ExtractFromContextOrGenerate(ctx))
indexingResult, err := idx.IndexRepository(ctx)
if indexingResult != nil {
slog.Debug("indexing Result", "project_id", idx.ProjectID, "force", idx.ForceReindex, "modified_files_count", indexingResult.ModifiedFilesCount, "deleted_files_count", indexingResult.DeletedFilesCount)
}
railsCallback := req.Callback
if err != nil {
if railsCallback != nil {
callbackFunc.OnFailure(*railsCallback, err)
}
return err
}
if railsCallback != nil {
callbackFunc.OnSuccess(*railsCallback)
}
return nil
}