Commit 74c49a2e authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Eliminate the backend refcount, n_conn serves as refcount and is all

we need.

Send warm dynamic backends "COLD" event before deleting them.
parent f9fccc04
...@@ -103,7 +103,6 @@ vbe_dir_getfd(struct worker *wrk, struct backend *bp, struct busyobj *bo) ...@@ -103,7 +103,6 @@ vbe_dir_getfd(struct worker *wrk, struct backend *bp, struct busyobj *bo)
AN(vc->addr); AN(vc->addr);
Lck_Lock(&bp->mtx); Lck_Lock(&bp->mtx);
bp->refcount++;
bp->n_conn++; bp->n_conn++;
bp->vsc->conn++; bp->vsc->conn++;
Lck_Unlock(&bp->mtx); Lck_Unlock(&bp->mtx);
...@@ -330,7 +329,7 @@ vbe_panic(const struct director *d, struct vsb *vsb) ...@@ -330,7 +329,7 @@ vbe_panic(const struct director *d, struct vsb *vsb)
VSB_printf(vsb, " health=%s, admin_health=%s", VSB_printf(vsb, " health=%s, admin_health=%s",
bp->healthy ? "healthy" : "sick", bp->admin_health); bp->healthy ? "healthy" : "sick", bp->admin_health);
VSB_printf(vsb, ", changed=%.1f\n", bp->health_changed); VSB_printf(vsb, ", changed=%.1f\n", bp->health_changed);
VSB_printf(vsb, " refcount = %d\n", bp->refcount); VSB_printf(vsb, " n_conn = %u\n", bp->n_conn);
} }
/*--------------------------------------------------------------------*/ /*--------------------------------------------------------------------*/
......
...@@ -52,7 +52,6 @@ struct backend { ...@@ -52,7 +52,6 @@ struct backend {
VTAILQ_ENTRY(backend) list; VTAILQ_ENTRY(backend) list;
VTAILQ_ENTRY(backend) vcl_list; VTAILQ_ENTRY(backend) vcl_list;
int refcount;
struct lock mtx; struct lock mtx;
VRT_BACKEND_FIELDS() VRT_BACKEND_FIELDS()
...@@ -129,4 +128,4 @@ void VBT_Wait(struct worker *, struct vbc *); ...@@ -129,4 +128,4 @@ void VBT_Wait(struct worker *, struct vbc *);
/* cache_vcl.c */ /* cache_vcl.c */
void VCL_AddBackend(struct vcl *, struct backend *); void VCL_AddBackend(struct vcl *, struct backend *);
void VCL_DelBackend(const struct backend *); void VCL_DelBackend(struct backend *);
...@@ -70,13 +70,11 @@ VRT_new_backend(VRT_CTX, const struct vrt_backend *vrt) ...@@ -70,13 +70,11 @@ VRT_new_backend(VRT_CTX, const struct vrt_backend *vrt)
CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC); CHECK_OBJ_NOTNULL(ctx, VRT_CTX_MAGIC);
CHECK_OBJ_NOTNULL(vrt, VRT_BACKEND_MAGIC); CHECK_OBJ_NOTNULL(vrt, VRT_BACKEND_MAGIC);
assert(vrt->ipv4_suckaddr != NULL || vrt->ipv6_suckaddr != NULL); assert(vrt->ipv4_suckaddr != NULL || vrt->ipv6_suckaddr != NULL);
vcl = ctx->vcl; vcl = ctx->vcl;
AN(vcl); AN(vcl);
AN(vrt->vcl_name); AN(vrt->vcl_name);
assert(vrt->ipv4_suckaddr != NULL || vrt->ipv6_suckaddr != NULL);
/* Create new backend */ /* Create new backend */
ALLOC_OBJ(b, BACKEND_MAGIC); ALLOC_OBJ(b, BACKEND_MAGIC);
......
...@@ -205,7 +205,7 @@ VCL_AddBackend(struct vcl *vcl, struct backend *be) ...@@ -205,7 +205,7 @@ VCL_AddBackend(struct vcl *vcl, struct backend *be)
} }
void void
VCL_DelBackend(const struct backend *be) VCL_DelBackend(struct backend *be)
{ {
struct vcl *vcl; struct vcl *vcl;
...@@ -215,6 +215,8 @@ VCL_DelBackend(const struct backend *be) ...@@ -215,6 +215,8 @@ VCL_DelBackend(const struct backend *be)
Lck_Lock(&vcl_mtx); Lck_Lock(&vcl_mtx);
VTAILQ_REMOVE(&vcl->backend_list, be, vcl_list); VTAILQ_REMOVE(&vcl->backend_list, be, vcl_list);
Lck_Unlock(&vcl_mtx); Lck_Unlock(&vcl_mtx);
if (vcl->temp == vcl_temp_warm)
VBE_Event(be, VCL_EVENT_COLD);
} }
static void static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment