@@ -73,6 +73,30 @@ func (impl *DepsolveJobImpl) depsolve(packageSets map[string][]rpmmd.PackageSet,
73
73
return depsolvedSets , repoConfigs , nil
74
74
}
75
75
76
+ func workerClientErrorFrom (err error ) (* clienterrors.Error , error ) {
77
+ switch e := err .(type ) {
78
+ case dnfjson.Error :
79
+ // Error originates from dnf-json
80
+ switch e .Kind {
81
+ case "DepsolveError" :
82
+ return clienterrors .WorkerClientError (clienterrors .ErrorDNFDepsolveError , err .Error (), e .Reason ), nil
83
+ case "MarkingErrors" :
84
+ return clienterrors .WorkerClientError (clienterrors .ErrorDNFMarkingErrors , err .Error (), e .Reason ), nil
85
+ case "RepoError" :
86
+ return clienterrors .WorkerClientError (clienterrors .ErrorDNFRepoError , err .Error (), e .Reason ), nil
87
+ default :
88
+ err := fmt .Errorf ("Unhandled dnf-json error in depsolve job: %v" , err )
89
+ // This still has the kind/reason format but a kind that's returned
90
+ // by dnf-json and not explicitly handled here.
91
+ return clienterrors .WorkerClientError (clienterrors .ErrorDNFOtherError , err .Error (), e .Reason ), err
92
+ }
93
+ default :
94
+ err := fmt .Errorf ("rpmmd error in depsolve job: %v" , err )
95
+ // Error originates from internal/rpmmd, not from dnf-json
96
+ return clienterrors .WorkerClientError (clienterrors .ErrorRPMMDError , err .Error (), nil ), err
97
+ }
98
+ }
99
+
76
100
func (impl * DepsolveJobImpl ) Run (job worker.Job ) error {
77
101
logWithId := logrus .WithField ("jobId" , job .Id ())
78
102
var args worker.DepsolveJob
@@ -106,26 +130,9 @@ func (impl *DepsolveJobImpl) Run(job worker.Job) error {
106
130
107
131
result .PackageSpecs , result .RepoConfigs , err = impl .depsolve (args .PackageSets , args .ModulePlatformID , args .Arch , args .Releasever )
108
132
if err != nil {
109
- switch e := err .(type ) {
110
- case dnfjson.Error :
111
- // Error originates from dnf-json
112
- switch e .Kind {
113
- case "DepsolveError" :
114
- result .JobError = clienterrors .WorkerClientError (clienterrors .ErrorDNFDepsolveError , err .Error (), e .Reason )
115
- case "MarkingErrors" :
116
- result .JobError = clienterrors .WorkerClientError (clienterrors .ErrorDNFMarkingErrors , err .Error (), e .Reason )
117
- case "RepoError" :
118
- result .JobError = clienterrors .WorkerClientError (clienterrors .ErrorDNFRepoError , err .Error (), e .Reason )
119
- default :
120
- // This still has the kind/reason format but a kind that's returned
121
- // by dnf-json and not explicitly handled here.
122
- result .JobError = clienterrors .WorkerClientError (clienterrors .ErrorDNFOtherError , err .Error (), e .Reason )
123
- logWithId .Errorf ("Unhandled dnf-json error in depsolve job: %v" , err )
124
- }
125
- case error :
126
- // Error originates from internal/rpmmd, not from dnf-json
127
- result .JobError = clienterrors .WorkerClientError (clienterrors .ErrorRPMMDError , err .Error (), nil )
128
- logWithId .Errorf ("rpmmd error in depsolve job: %v" , err )
133
+ result .JobError , err = workerClientErrorFrom (err )
134
+ if err != nil {
135
+ logWithId .Errorf (err .Error ())
129
136
}
130
137
}
131
138
if err := impl .Solver .CleanCache (); err != nil {
0 commit comments