zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-2933) Ability to monitor the jute.maxBuffer usage in real-time
Date Thu, 09 Nov 2017 00:19:01 GMT

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-2933?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16244983#comment-16244983
] 

ASF GitHub Bot commented on ZOOKEEPER-2933:
-------------------------------------------

Github user afine commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/415#discussion_r149832062
  
    --- Diff: src/java/test/org/apache/zookeeper/server/util/SerializeUtilsTest.java ---
    @@ -0,0 +1,73 @@
    +/**
    + * 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.util;
    +
    +import org.apache.jute.OutputArchive;
    +import org.apache.jute.Record;
    +import org.apache.zookeeper.server.Request;
    +import org.apache.zookeeper.txn.TxnHeader;
    +import org.junit.Test;
    +import org.mockito.InOrder;
    +
    +import java.io.IOException;
    +
    +import static org.junit.Assert.assertNotNull;
    +import static org.junit.Assert.assertNull;
    +import static org.mockito.Matchers.any;
    +import static org.mockito.Matchers.eq;
    +import static org.mockito.Mockito.inOrder;
    +import static org.mockito.Mockito.mock;
    +import static org.mockito.Mockito.verify;
    +
    +public class SerializeUtilsTest {
    +
    +    @Test
    +    public void testSerializeRequest_RequestIsNull() {
    +        byte[] data = SerializeUtils.serializeRequest(null);
    +        assertNull(data);
    +    }
    +
    +    @Test
    +    public void testSerializeRequest_RequestHeaderIsNull() {
    +        Request request = new Request(0, 0, 0, null, null, 0);
    +        byte[] data = SerializeUtils.serializeRequest(request);
    +        assertNull(data);
    +    }
    +
    +    @Test
    +    public void testSerializeRequest_WithoutTxn() throws IOException {
    +        TxnHeader header = mock(TxnHeader.class);
    +        Request request = new Request(1, 2, 3, header, null, 4);
    +        byte[] data = SerializeUtils.serializeRequest(request);
    +        assertNotNull(data);
    +        verify(header).serialize(any(OutputArchive.class), eq("hdr"));
    +    }
    +
    +    @Test
    +    public void testSerializeRequest_WithTxn() throws IOException {
    +        Record txn = mock(Record.class);
    +        TxnHeader header = mock(TxnHeader.class);
    +        Request request = new Request(1, 2, 3, header, txn, 4);
    +        byte[] data = SerializeUtils.serializeRequest(request);
    +        assertNotNull(data);
    +        InOrder inOrder = inOrder(header, txn);
    --- End diff --
    
    I'm concerned that we do not actually check that the result of serializing the header
and transaction ever make it into `data`. Would it be possible to write this test to mock
out the serialization of the `header` and `txn` then make sure we get the `data` we expect?


> Ability to monitor the jute.maxBuffer usage in real-time
> --------------------------------------------------------
>
>                 Key: ZOOKEEPER-2933
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2933
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: jute, server
>            Reporter: Andor Molnar
>            Assignee: Andor Molnar
>              Labels: buffer, buffer-length
>             Fix For: 3.5.4, 3.6.0
>
>
> This is related to jute.maxbuffer problems on the server side when Leader generates a
proposal that doesn't fit into Follower's Jute buffer causing the quorum to be broken.
> Proposed solution is to add the following new JMX Beans:
> 1. Add getJuteMaxBuffer to ZookeeperServerBean which monitors the current jute.maxbuffer
setting,
> 2. Add get last/min/max ProposalSize to LeaderBean which monitors the size of the latest/min/max
proposal.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message