diff --git a/go/coredns/plugin/pfdns/pfdns.go b/go/coredns/plugin/pfdns/pfdns.go
index <HASH>..<HASH> 100644
--- a/go/coredns/plugin/pfdns/pfdns.go
+++ b/go/coredns/plugin/pfdns/pfdns.go
@@ -130,6 +130,10 @@ func (pf *pfdns) RefreshPfconfig(ctx context.Context) {
 // ServeDNS implements the middleware.Handler interface.
 func (pf *pfdns) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
 
+	id, _ := GlobalTransactionLock.Lock()
+
+	defer GlobalTransactionLock.Unlock(id)
+
 	pf.RefreshPfconfig(ctx)
 
 	state := request.Request{W: w, Req: r}
read lock in pfdns