@ -29,19 +29,23 @@ 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 )
}
}
}
}
@ -65,8 +69,8 @@ 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 {
@ -75,8 +79,8 @@ 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 )
@ -161,11 +165,12 @@ 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
}
}
} ( )
} ( )
}
}
@ -177,8 +182,8 @@ 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 )