Mercurial > gemma
changeset 4961:67d78b74fe43 fairway-marks-import
Be more careful with unchanged errors if features were removed.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 26 Feb 2020 19:28:21 +0100 |
parents | fb48bc6415c0 |
children | 1b309a8e7673 |
files | pkg/imports/fm.go pkg/imports/pointwfs.go |
diffstat | 2 files changed, 23 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/pkg/imports/fm.go Wed Feb 26 18:09:58 2020 +0100 +++ b/pkg/imports/fm.go Wed Feb 26 19:28:21 2020 +0100 @@ -443,11 +443,14 @@ if err != nil { return err } - nOld, err := res.RowsAffected() + old, err := res.RowsAffected() if err != nil { return err } - spc.feedback.Info("Number of features removed from data source: %d", nOld) + if old == 0 { + return ErrFeaturesUnmodified + } + spc.feedback.Info("Number of features removed from data source: %d", old) return nil } }
--- a/pkg/imports/pointwfs.go Wed Feb 26 18:09:58 2020 +0100 +++ b/pkg/imports/pointwfs.go Wed Feb 26 19:28:21 2020 +0100 @@ -28,8 +28,9 @@ ) var ( - ErrFeatureIgnored = errors.New("feature ignored") - ErrFeatureDuplicated = errors.New("feature duplicated") + ErrFeatureIgnored = errors.New("feature ignored") + ErrFeatureDuplicated = errors.New("feature duplicated") + ErrFeaturesUnmodified = errors.New("features unmodified") ) type ( @@ -222,18 +223,23 @@ feedback.Warn("Unsupported types found: %s", unsupported) } - if err = consumer.Commit(); err == nil { + if err = consumer.Commit(); err == nil || err == ErrFeaturesUnmodified { feedback.Info("Storing %d features took %s", features, time.Since(start)) } // Commit before eventually returning UnchangedError because we might // have updated last_found - if features == 0 { + if features == 0 && err == ErrFeaturesUnmodified { return nil, UnchangedError("no valid new features found") } - return nil, nil + if err == ErrFeaturesUnmodified { + // It's not really an error. + err = nil + } + + return nil, err } type ( @@ -260,18 +266,20 @@ } func (spc *SQLPointConsumer) Commit() error { + var err error if tx := spc.tx; tx != nil { if spc.preCommit != nil { - if err := spc.preCommit(spc); err != nil { - return err - } + err = spc.preCommit(spc) } spc.releaseStmts() spc.tx = nil spc.ctx = nil - return tx.Commit() + if err2 := tx.Commit(); err2 != nil { + // A real error on commit overrules the first. + err = err2 + } } - return nil + return err } func (spc *SQLPointConsumer) NewProperties() interface{} {