zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hanm <...@git.apache.org>
Subject [GitHub] zookeeper pull request #628: ZOOKEEPER-3140: Allow Followers to host Observe...
Date Thu, 20 Sep 2018 05:00:19 GMT
Github user hanm commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/628#discussion_r219034842
  
    --- Diff: src/java/test/org/apache/zookeeper/server/quorum/DelayRequestProcessor.java
---
    @@ -0,0 +1,77 @@
    +/**
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package org.apache.zookeeper.server.quorum;
    +
    +import org.apache.zookeeper.server.Request;
    +import org.apache.zookeeper.server.RequestProcessor;
    +
    +import java.util.concurrent.LinkedBlockingQueue;
    +
    +public class DelayRequestProcessor implements RequestProcessor {
    +
    +    private boolean blocking;
    +    RequestProcessor next;
    +
    +    private LinkedBlockingQueue<Request> incomingRequests = new LinkedBlockingQueue<>();
    +
    +    private DelayRequestProcessor(RequestProcessor next) {
    +        this.blocking = true;
    +        this.next = next;
    +    }
    +
    +    @Override
    +    public void processRequest(Request request) throws RequestProcessorException {
    +        if (blocking) {
    +            incomingRequests.add(request);
    +        } else {
    +            next.processRequest(request);
    +        }
    +    }
    +
    +    public void submitRequest(Request request) throws RequestProcessorException {
    +        next.processRequest(request);
    +    }
    +
    +    @Override
    +    public void shutdown() {
    +    }
    +
    +    public void unblockQueue() throws RequestProcessorException {
    +        if (blocking) {
    +            for (Request request : incomingRequests) {
    +                next.processRequest(request);
    +            }
    +            blocking = false;
    +        }
    +    }
    +
    +    public static DelayRequestProcessor injectDelayRequestProcessor(LeaderZooKeeperServer
zooKeeperServer) {
    --- End diff --
    
    Is this method needed? Seems no code uses it.


---

Mime
View raw message