@ -30,18 +30,22 @@ const (
// SyncRequest for the mirror queue
// SyncRequest for the mirror queue
type SyncRequest struct {
type SyncRequest struct {
Type SyncType
Type SyncType
RepoID int64
ReferenceID int64 // RepoID for pull mirror, MirrorID fro push mirror
}
}
// doMirrorSync causes this request to mirror itself
// doMirrorSync causes this request to mirror itself
func doMirrorSync ( ctx context . Context , req * SyncRequest ) {
func doMirrorSync ( ctx context . Context , req * SyncRequest ) {
if req . ReferenceID == 0 {
log . Warn ( "Skipping mirror sync request, no mirror ID was specified" )
return
}
switch req . Type {
switch req . Type {
case PushMirrorType :
case PushMirrorType :
_ = SyncPushMirror ( ctx , req . RepoID )
_ = SyncPushMirror ( ctx , req . Reference ID )
case PullMirrorType :
case PullMirrorType :
_ = SyncPullMirror ( ctx , req . Repo ID )
_ = SyncPullMirror ( ctx , req . Reference ID )
default :
default :
log . Error ( "Unknown Request type in queue: %v for Repo ID[%d]" , req . Type , req . Repo ID )
log . Error ( "Unknown Request type in queue: %v for Mirror ID[%d]" , req . Type , req . Reference ID )
}
}
}
}
@ -66,7 +70,7 @@ func Update(ctx context.Context, pullLimit, pushLimit int) error {
repo = m . Repo
repo = m . Repo
item = SyncRequest {
item = SyncRequest {
Type : PullMirrorType ,
Type : PullMirrorType ,
Repo ID : m . RepoID ,
Reference ID : m . RepoID ,
}
}
} else if m , ok := bean . ( * repo_model . PushMirror ) ; ok {
} else if m , ok := bean . ( * repo_model . PushMirror ) ; ok {
if m . Repo == nil {
if m . Repo == nil {
@ -76,7 +80,7 @@ func Update(ctx context.Context, pullLimit, pushLimit int) error {
repo = m . Repo
repo = m . Repo
item = SyncRequest {
item = SyncRequest {
Type : PushMirrorType ,
Type : PushMirrorType ,
Repo ID : m . Repo ID,
Reference ID : m . ID ,
}
}
} else {
} else {
log . Error ( "Unknown bean: %v" , bean )
log . Error ( "Unknown bean: %v" , bean )
@ -162,10 +166,11 @@ func StartToMirror(repoID int64) {
go func ( ) {
go func ( ) {
err := mirrorQueue . Push ( & SyncRequest {
err := mirrorQueue . Push ( & SyncRequest {
Type : PullMirrorType ,
Type : PullMirrorType ,
Repo ID : repoID ,
Reference ID : repoID ,
} )
} )
if err != nil {
if err != nil {
log . Error ( "Unable to push sync request for to the queue for push mirror repo[%d]: Error: %v" , repoID , err )
log . Error ( "Unable to push sync request for to the queue for pull mirror repo[%d]: Error: %v" , repoID , err )
return
}
}
} ( )
} ( )
}
}
@ -178,7 +183,7 @@ func AddPushMirrorToQueue(mirrorID int64) {
go func ( ) {
go func ( ) {
err := mirrorQueue . Push ( & SyncRequest {
err := mirrorQueue . Push ( & SyncRequest {
Type : PushMirrorType ,
Type : PushMirrorType ,
Repo ID : mirrorID ,
Reference ID : mirrorID ,
} )
} )
if err != nil {
if err != nil {
log . Error ( "Unable to push sync request to the queue for pull mirror repo[%d]: Error: %v" , mirrorID , err )
log . Error ( "Unable to push sync request to the queue for pull mirror repo[%d]: Error: %v" , mirrorID , err )