Skip to content

Commit ff7c22d

Browse files
committed
fine tune
1 parent 1558766 commit ff7c22d

File tree

3 files changed

+42
-39
lines changed

3 files changed

+42
-39
lines changed

cmd/dump.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,18 @@ func runDump(ctx context.Context, cmd *cli.Command) error {
145145
return err
146146
}
147147

148-
dumper := dump.NewDumper(ctx, outType, outFile)
148+
dumper, err := dump.NewDumper(ctx, outType, outFile)
149+
if err != nil {
150+
fatal("Failed to create archive %q: %v", outFile, err)
151+
return err
152+
}
149153
dumper.Verbose = verbose
150154
dumper.GlobalExcludeAbsPath(outFileName)
151-
defer dumper.Close()
155+
defer func() {
156+
if err := dumper.Close(); err != nil {
157+
fatal("Failed to save archive %q: %v", outFileName, err)
158+
}
159+
}()
152160

153161
if cmd.IsSet("skip-repository") && cmd.Bool("skip-repository") {
154162
log.Info("Skip dumping local repositories")
@@ -167,7 +175,7 @@ func runDump(ctx context.Context, cmd *cli.Command) error {
167175
if err != nil {
168176
return err
169177
}
170-
return dumper.AddReader(object, info, path.Join("data", "lfs", objPath))
178+
return dumper.AddFileByReader(object, info, path.Join("data", "lfs", objPath))
171179
}); err != nil {
172180
fatal("Failed to dump LFS objects: %v", err)
173181
}
@@ -205,13 +213,13 @@ func runDump(ctx context.Context, cmd *cli.Command) error {
205213
fatal("Failed to dump database: %v", err)
206214
}
207215

208-
if err = dumper.AddFile("gitea-db.sql", dbDump.Name()); err != nil {
216+
if err = dumper.AddFileByPath("gitea-db.sql", dbDump.Name()); err != nil {
209217
fatal("Failed to include gitea-db.sql: %v", err)
210218
}
211219
}
212220

213221
log.Info("Adding custom configuration file from %s", setting.CustomConf)
214-
if err = dumper.AddFile("app.ini", setting.CustomConf); err != nil {
222+
if err = dumper.AddFileByPath("app.ini", setting.CustomConf); err != nil {
215223
fatal("Failed to include specified app.ini: %v", err)
216224
}
217225

@@ -270,7 +278,7 @@ func runDump(ctx context.Context, cmd *cli.Command) error {
270278
if err != nil {
271279
return err
272280
}
273-
return dumper.AddReader(object, info, path.Join("data", "attachments", objPath))
281+
return dumper.AddFileByReader(object, info, path.Join("data", "attachments", objPath))
274282
}); err != nil {
275283
fatal("Failed to dump attachments: %v", err)
276284
}
@@ -284,7 +292,7 @@ func runDump(ctx context.Context, cmd *cli.Command) error {
284292
if err != nil {
285293
return err
286294
}
287-
return dumper.AddReader(object, info, path.Join("data", "packages", objPath))
295+
return dumper.AddFileByReader(object, info, path.Join("data", "packages", objPath))
288296
}); err != nil {
289297
fatal("Failed to dump packages: %v", err)
290298
}

modules/dump/dumper.go

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,23 @@ func NewDumper(ctx context.Context, format string, output io.Writer) (*Dumper, e
107107
return d, nil
108108
}
109109

110-
// AddFilePath adds a file by its filesystem path
111-
func (dumper *Dumper) AddFilePath(filePath, absPath string) error {
110+
func (dumper *Dumper) runArchiveJob(job archives.ArchiveAsyncJob) error {
111+
dumper.jobs <- job
112+
select {
113+
case err := <-dumper.errArchiveAsync:
114+
if err == nil {
115+
return errors.New("archiver has been closed")
116+
}
117+
return err
118+
case err := <-dumper.errArchiveJob:
119+
return err
120+
}
121+
}
122+
123+
// AddFileByPath adds a file by its filesystem path
124+
func (dumper *Dumper) AddFileByPath(filePath, absPath string) error {
112125
if dumper.Verbose {
113-
log.Info("Adding file path %s", filePath)
126+
log.Info("Adding local file %s", filePath)
114127
}
115128

116129
fileInfo, err := os.Stat(absPath)
@@ -121,24 +134,13 @@ func (dumper *Dumper) AddFilePath(filePath, absPath string) error {
121134
archiveFileInfo := archives.FileInfo{
122135
FileInfo: fileInfo,
123136
NameInArchive: filePath,
124-
Open: func() (fs.File, error) {
125-
return os.Open(absPath)
126-
},
137+
Open: func() (fs.File, error) { return os.Open(absPath) },
127138
}
128139

129-
dumper.jobs <- archives.ArchiveAsyncJob{
140+
return dumper.runArchiveJob(archives.ArchiveAsyncJob{
130141
File: archiveFileInfo,
131142
Result: dumper.errArchiveJob,
132-
}
133-
select {
134-
case err = <-dumper.errArchiveAsync:
135-
if err == nil {
136-
return errors.New("archiver has been closed")
137-
}
138-
return err
139-
case err = <-dumper.errArchiveJob:
140-
return err
141-
}
143+
})
142144
}
143145

144146
type readerFile struct {
@@ -152,35 +154,28 @@ func (f *readerFile) Stat() (fs.FileInfo, error) { return f.info, nil }
152154
func (f *readerFile) Read(bytes []byte) (int, error) { return f.r.Read(bytes) }
153155
func (f *readerFile) Close() error { return nil }
154156

155-
// AddReader adds a file's contents from a Reader, this uses a pipe to stream files from object store to prevent them from filling up disk
156-
func (dumper *Dumper) AddReader(r io.Reader, info os.FileInfo, customName string) error {
157+
// AddFileByReader adds a file's contents from a Reader
158+
func (dumper *Dumper) AddFileByReader(r io.Reader, info os.FileInfo, customName string) error {
157159
if dumper.Verbose {
158-
log.Info("Adding file %s", customName)
160+
log.Info("Adding storage file %s", customName)
159161
}
160162

161163
fileInfo := archives.FileInfo{
162164
FileInfo: info,
163165
NameInArchive: customName,
164166
Open: func() (fs.File, error) { return &readerFile{r, info}, nil },
165167
}
166-
167-
dumper.jobs <- archives.ArchiveAsyncJob{
168+
return dumper.runArchiveJob(archives.ArchiveAsyncJob{
168169
File: fileInfo,
169170
Result: dumper.errArchiveJob,
170-
}
171-
return <-dumper.errArchiveJob
171+
})
172172
}
173173

174174
func (dumper *Dumper) Close() error {
175175
close(dumper.jobs)
176176
return <-dumper.errArchiveAsync
177177
}
178178

179-
// AddFile kept for backwards compatibility since streaming is more efficient
180-
func (dumper *Dumper) AddFile(filePath, absPath string) error {
181-
return dumper.AddFilePath(filePath, absPath)
182-
}
183-
184179
func (dumper *Dumper) normalizeFilePath(absPath string) string {
185180
absPath = filepath.Clean(absPath)
186181
if setting.IsWindows {
@@ -231,7 +226,7 @@ func (dumper *Dumper) addFileOrDir(insidePath, absPath string, excludes []string
231226

232227
currentInsidePath := path.Join(insidePath, file.Name())
233228
if file.IsDir() {
234-
if err := dumper.AddFile(currentInsidePath, currentAbsPath); err != nil {
229+
if err := dumper.AddFileByPath(currentInsidePath, currentAbsPath); err != nil {
235230
return err
236231
}
237232
if err = dumper.addFileOrDir(currentInsidePath, currentAbsPath, excludes); err != nil {
@@ -252,7 +247,7 @@ func (dumper *Dumper) addFileOrDir(insidePath, absPath string, excludes []string
252247
shouldAdd = targetStat.Mode().IsRegular()
253248
}
254249
if shouldAdd {
255-
if err = dumper.AddFile(currentInsidePath, currentAbsPath); err != nil {
250+
if err = dumper.AddFileByPath(currentInsidePath, currentAbsPath); err != nil {
256251
return err
257252
}
258253
}

modules/dump/dumper_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func TestDumperIntegration(t *testing.T) {
7979
f, _ := os.Open(filepath.Join(tmpDir, "test.txt"))
8080

8181
fi, _ := f.Stat()
82-
err = dumper.AddReader(f, fi, "test.txt")
82+
err = dumper.AddFileByReader(f, fi, "test.txt")
8383
require.NoError(t, err)
8484

8585
err = dumper.Close()

0 commit comments

Comments
 (0)