@@ -50,19 +50,45 @@ func migratePullMirrors(x *xorm.Engine) error {
50
50
return err
51
51
}
52
52
53
- if err := sess .Iterate (new (Mirror ), func (_ int , bean any ) error {
54
- m := bean .(* Mirror )
55
- remoteAddress , err := getRemoteAddress (sess , m .RepoID , "origin" )
56
- if err != nil {
53
+ limit := setting .Database .IterateBufferSize
54
+ if limit <= 0 {
55
+ limit = 50
56
+ }
57
+
58
+ start := 0
59
+
60
+ for {
61
+ var mirrors []Mirror
62
+ if err := sess .Limit (limit , start ).Find (& mirrors ); err != nil {
57
63
return err
58
64
}
59
65
60
- m .RemoteAddress = remoteAddress
66
+ if len (mirrors ) == 0 {
67
+ break
68
+ }
69
+ start += len (mirrors )
61
70
62
- _ , err = sess .ID (m .ID ).Cols ("remote_address" ).Update (m )
63
- return err
64
- }); err != nil {
65
- return err
71
+ for _ , m := range mirrors {
72
+ remoteAddress , err := getRemoteAddress (sess , m .RepoID , "origin" )
73
+ if err != nil {
74
+ return err
75
+ }
76
+
77
+ m .RemoteAddress = remoteAddress
78
+
79
+ if _ , err = sess .ID (m .ID ).Cols ("remote_address" ).Update (m ); err != nil {
80
+ return err
81
+ }
82
+ }
83
+
84
+ if start % 1000 == 0 { // avoid a too big transaction
85
+ if err := sess .Commit (); err != nil {
86
+ return err
87
+ }
88
+ if err := sess .Begin (); err != nil {
89
+ return err
90
+ }
91
+ }
66
92
}
67
93
68
94
return sess .Commit ()
@@ -83,19 +109,45 @@ func migratePushMirrors(x *xorm.Engine) error {
83
109
return err
84
110
}
85
111
86
- if err := sess .Iterate (new (PushMirror ), func (_ int , bean any ) error {
87
- m := bean .(* PushMirror )
88
- remoteAddress , err := getRemoteAddress (sess , m .RepoID , m .RemoteName )
89
- if err != nil {
112
+ limit := setting .Database .IterateBufferSize
113
+ if limit <= 0 {
114
+ limit = 50
115
+ }
116
+
117
+ start := 0
118
+
119
+ for {
120
+ var mirrors []PushMirror
121
+ if err := sess .Limit (limit , start ).Find (& mirrors ); err != nil {
90
122
return err
91
123
}
92
124
93
- m .RemoteAddress = remoteAddress
125
+ if len (mirrors ) == 0 {
126
+ break
127
+ }
128
+ start += len (mirrors )
94
129
95
- _ , err = sess .ID (m .ID ).Cols ("remote_address" ).Update (m )
96
- return err
97
- }); err != nil {
98
- return err
130
+ for _ , m := range mirrors {
131
+ remoteAddress , err := getRemoteAddress (sess , m .RepoID , m .RemoteName )
132
+ if err != nil {
133
+ return err
134
+ }
135
+
136
+ m .RemoteAddress = remoteAddress
137
+
138
+ if _ , err = sess .ID (m .ID ).Cols ("remote_address" ).Update (m ); err != nil {
139
+ return err
140
+ }
141
+ }
142
+
143
+ if start % 1000 == 0 { // avoid a too big transaction
144
+ if err := sess .Commit (); err != nil {
145
+ return err
146
+ }
147
+ if err := sess .Begin (); err != nil {
148
+ return err
149
+ }
150
+ }
99
151
}
100
152
101
153
return sess .Commit ()
0 commit comments