static enum fetch_step vbf_stp_fail(struct worker *wrk, const struct busyobj *bo) { CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC); CHECK_OBJ_NOTNULL(bo->fetch_objcore, OBJCORE_MAGIC); assert(bo->fetch_objcore->boc->state < BOS_FINISHED); HSH_Fail(bo->fetch_objcore); if (!(bo->fetch_objcore->flags & OC_F_BUSY)) HSH_Kill(bo->fetch_objcore); ObjSetState(wrk, bo->fetch_objcore, BOS_FAILED); return (F_STP_DONE); }
int VFP_Error2(struct busyobj *bo, const char *error, const char *more) { CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC); if (bo->state < BOS_FAILED) { if (more == NULL) VSLb(bo->vsl, SLT_FetchError, "%s", error); else VSLb(bo->vsl, SLT_FetchError, "%s: %s", error, more); if (bo->fetch_objcore != NULL) HSH_Fail(bo->fetch_objcore); VBO_setstate(bo, BOS_FAILED); } return (-1); }
static enum fetch_step vbf_stp_fail(struct worker *wrk, struct busyobj *bo) { CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC); CHECK_OBJ_NOTNULL(bo, BUSYOBJ_MAGIC); CHECK_OBJ_NOTNULL(bo->fetch_objcore, OBJCORE_MAGIC); assert(bo->state < BOS_FINISHED); HSH_Fail(bo->fetch_objcore); if (bo->fetch_objcore->exp_flags & OC_EF_EXP) { /* Already unbusied - expire it */ AN(bo->fetch_obj); EXP_Rearm(bo->fetch_obj, bo->fetch_obj->exp.t_origin, 0, 0, 0); } wrk->stats.fetch_failed++; VBO_setstate(bo, BOS_FAILED); return (F_STP_DONE); }