MCPcopy
hub / github.com/NVIDIA/aistore / fini

Method fini

ais/tgtobj.go:235–310  ·  view source on GitHub ↗

poi.workFQN => LOM

()

Source from the content-addressed store, hash-verified

233
234// poi.workFQN => LOM
235func (poi *putObjInfo) fini() (errCode int, err error) {
236 var (
237 lom = poi.lom
238 bck = lom.Bck()
239 bmd = poi.t.owner.bmd.Get()
240 )
241 // remote versioning
242 if bck.IsRemote() && (poi.owt == cmn.OwtPut || poi.owt == cmn.OwtFinalize || poi.owt == cmn.OwtPromote) {
243 errCode, err = poi.putRemote()
244 if err != nil {
245 loghdr := poi.loghdr()
246 glog.Errorf("PUT (%s): %v(%d)", loghdr, err, errCode)
247 if errCode != http.StatusServiceUnavailable {
248 return
249 }
250 // e.g.: "googleapi: Error 503: We encountered an internal error. Please try again."
251 time.Sleep(time.Second)
252 errCode, err = poi.putRemote()
253 if err != nil {
254 return
255 }
256 glog.Infof("PUT (%s): retried OK", loghdr)
257 }
258 }
259 if _, present := bmd.Get(bck); !present {
260 err = fmt.Errorf("PUT (%s): %q does not exist", poi.loghdr(), bck)
261 errCode = http.StatusBadRequest
262 return
263 }
264
265 // NOTE: see GetCold() implementation and cmn.OWT
266 switch poi.owt {
267 case cmn.OwtGetTryLock, cmn.OwtGetLock, cmn.OwtGet:
268 debug.AssertFunc(func() bool { _, exclusive := lom.IsLocked(); return exclusive })
269 case cmn.OwtGetPrefetchLock:
270 if !lom.TryLock(true) {
271 if glog.FastV(4, glog.SmoduleAIS) {
272 glog.Warningf("(%s) is busy", poi.loghdr())
273 }
274 return 0, cmn.ErrSkip // e.g. prefetch can skip it and keep on going
275 }
276 defer lom.Unlock(true)
277 default:
278 lom.Lock(true)
279 defer lom.Unlock(true)
280 }
281
282 // ais versioning
283 if bck.IsAIS() && lom.VersionConf().Enabled {
284 if poi.owt == cmn.OwtPut || poi.owt == cmn.OwtFinalize || poi.owt == cmn.OwtPromote {
285 if poi.skipVC {
286 err = lom.IncVersion()
287 debug.Assert(err == nil)
288 } else if remSrc, ok := lom.GetCustomKey(cmn.SourceObjMD); !ok || remSrc == "" {
289 if err = lom.IncVersion(); err != nil {
290 glog.Error(err)
291 }
292 }

Callers 1

finalizeMethod · 0.95

Calls 15

putRemoteMethod · 0.95
loghdrMethod · 0.95
ErrorfFunction · 0.92
InfofFunction · 0.92
AssertFuncFunction · 0.92
FastVFunction · 0.92
WarningfFunction · 0.92
AssertFunction · 0.92
ErrorFunction · 0.92
RenameFunction · 0.92
NewErrFailedToFunction · 0.92
IncVersionMethod · 0.80

Tested by

no test coverage detected