@@ -57,8 +57,9 @@ func (repo *Repository) updateIndexerStatus(sha string) error {
5757}
5858
5959type repoIndexerOperation struct {
60- repo * Repository
61- deleted bool
60+ repo * Repository
61+ deleted bool
62+ watchers []chan <- error
6263}
6364
6465var repoIndexerOperationQueue chan repoIndexerOperation
@@ -312,26 +313,30 @@ func nonGenesisChanges(repo *Repository, revision string) (*repoChanges, error)
312313func processRepoIndexerOperationQueue () {
313314 for {
314315 op := <- repoIndexerOperationQueue
316+ var err error
315317 if op .deleted {
316- if err : = indexer .DeleteRepoFromIndexer (op .repo .ID ); err != nil {
318+ if err = indexer .DeleteRepoFromIndexer (op .repo .ID ); err != nil {
317319 log .Error ("DeleteRepoFromIndexer: %v" , err )
318320 }
319321 } else {
320- if err : = updateRepoIndexer (op .repo ); err != nil {
322+ if err = updateRepoIndexer (op .repo ); err != nil {
321323 log .Error ("updateRepoIndexer: %v" , err )
322324 }
323325 }
326+ for _ , watcher := range op .watchers {
327+ watcher <- err
328+ }
324329 }
325330}
326331
327332// DeleteRepoFromIndexer remove all of a repository's entries from the indexer
328- func DeleteRepoFromIndexer (repo * Repository ) {
329- addOperationToQueue (repoIndexerOperation {repo : repo , deleted : true })
333+ func DeleteRepoFromIndexer (repo * Repository , watchers ... chan <- error ) {
334+ addOperationToQueue (repoIndexerOperation {repo : repo , deleted : true , watchers : watchers })
330335}
331336
332337// UpdateRepoIndexer update a repository's entries in the indexer
333- func UpdateRepoIndexer (repo * Repository ) {
334- addOperationToQueue (repoIndexerOperation {repo : repo , deleted : false })
338+ func UpdateRepoIndexer (repo * Repository , watchers ... chan <- error ) {
339+ addOperationToQueue (repoIndexerOperation {repo : repo , deleted : false , watchers : watchers })
335340}
336341
337342func addOperationToQueue (op repoIndexerOperation ) {
0 commit comments