[ { "Summary": "Update for Zookeeper latest version", "Issue key": "ZOOKEEPER-4696", "Issue id": 13536435, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Critical", "Resolution": "", "Assignee": "szucsvillo", "Reporter": "dilip_anand", "Creator": "dilip_anand", "Created": "16/May/23 16:33", "Updated": "20/Jul/23 16:51", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.8.0", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "security", "Component/s__1": "server", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "CVE", "Labels__1": "", "Description": "Hi team,\n\n       We ran a scan for security vulnerability fixes,we have seen CVE's that are affected for zookeeper and version of zookeeper we are using is 3.8.0 .Here are the CVE's which are affected with zookeeper CVE-2022-32221,CVE-2023-23914,CVE-2023-27533,CVE-2023-27534,CVE-2022-22576,CVE-2020-8169,CVE-2020-8285,CVE-2020-8286,CVE-2021-22926,CVE-2021-22946,CVE-2022-27775,CVE-2022-27781,CVE-2022-27782,CVE-2023-23916 which do not have any reports in red hat website. we want to know what version of zookeeper will clear these CVEs and when it'll be released?\n\nRegards,\nDilip", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "ZOOKEEPER-4700", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Jul 20 16:51:57 UTC 2023", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z1hxl4:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "30/May/23 14:48;szucsvillo;I started working on the patch. -I think we need to upgrade the main version of Jetty because all of the 9.4-based versions have CVE problems. See here: [https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server].  We should upgrade Jetty to 11.0.15, which is the latest version. For this, we need quite a few code changes because of the deprecated methods and classes.- [-https://www.eclipse.org/jetty/javadoc/jetty-10/deprecated-list.html-];;;", "Comment__1": "01/Jun/23 06:57;szucsvillo;There are 3 CVEs in the branch-3.8.1:\n [ERROR] jackson-core-2.13.4.jar: CVE-2022-45688(7.5)\n [ERROR] jetty-io-9.4.49.v20220914.jar: CVE-2023-26048(5.3), CVE-2023-26049(5.3)\n [ERROR] jetty-server-9.4.49.v20220914.jar: CVE-2023-26048(5.3), CVE-2023-26049(5.3)\n\nI think CVE-2022-45688 is false positive. ([https://github.com/jeremylong/DependencyCheck/actions/runs/5126385253])\nCVE-2023-26048(5.3) and CVE-2023-26049(5.3) are tracked here: https://issues.apache.org/jira/browse/ZOOKEEPER-4700.;;;", "Comment__2": "20/Jul/23 16:51;antons;Are there any plans to merge these changes to currently latest stable 3.7.x branch?;;;", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Fix license files for Netty: some files are for 4.1.76 and some other files are for 4.1.86", "Issue key": "ZOOKEEPER-4666", "Issue id": 13521088, "Parent id": "", "Issue Type": "Task", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "eolivelli", "Reporter": "eolivelli", "Creator": "eolivelli", "Created": "24/Jan/23 08:24", "Updated": "25/Jan/23 08:45", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "eolivelli commented on PR #1974:\nURL: https://github.com/apache/zookeeper/pull/1974#issuecomment-1401543384\n\n This is a trivial fix, I will commit as soon as CI passes\n\n\n;24/Jan/23 08:25;githubbot;600", "Log Work__1": "eolivelli merged PR #1974:\nURL: https://github.com/apache/zookeeper/pull/1974\n\n\n;25/Jan/23 08:45;githubbot;600", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 1200, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 1200, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2023-01-24 08:24:04.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z1fbco:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Quota cannot limit the specify value when multiply clients create/set znodes", "Issue key": "ZOOKEEPER-4375", "Issue id": 13400622, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "12/Sep/21 09:47", "Updated": "21/Apr/22 07:53", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.8.0", "Affects Version/s__1": "3.9.0", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "", "Labels__1": "", "Description": "{code:java}\n[zk: 127.0.0.1:2180(CONNECTED) 0] create /benchmark-09-14 \"123\"\nCreated /benchmark-09-14\n[zk: 127.0.0.1:2180(CONNECTED) 1] setquota -N 100 /benchmark-09-14\n[zk: 127.0.0.1:2180(CONNECTED) 2]\n[zk: 127.0.0.1:2180(CONNECTED) 2]\n[zk: 127.0.0.1:2180(CONNECTED) 2] listquota /benchmark-09-14\nabsolute path is /zookeeper/quota/benchmark-09-14/zookeeper_limits\nOutput quota for /benchmark-09-14 count=-1,bytes=-1=;byteHardLimit=-1;countHardLimit=100\nOutput stat for /benchmark-09-14 count=115,bytes=135999\n[zk: 127.0.0.1:2180(CONNECTED) 3] getAllChildrenNumber /benchmark-09-14\n114\n\n# we have 50 multiply concurrent client to create zonods under the parent node:/benchmark-09-14\n\n➜ YCSB git:(master) ✗ ./bin/ycsb load zookeeper -s -threads 50 -P workloads/workloadb -p zookeeper.connectString=127.0.0.1:2180/benchmark-09-14\n\n{code}", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2021-09-12 09:47:30.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0utu0:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "export ZooKeeper version as prometheus metric", "Issue key": "ZOOKEEPER-3982", "Issue id": 13336613, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "22/Oct/20 01:58", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "metric system", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling opened a new pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528\n\n\n - Apply this patch, we can export ZooKeeper version as prometheus metric. For example:\n ```\n leader_unavailable_time_sum 0.0\n # HELP zk_version_info ZooKeeper version info\n # TYPE zk_version_info gauge\n zk_version_info{version=\"3.7.0-SNAPSHOT\",revision_hash=\"b761b77a3bf8cd02edaad88a33bafbc8b6c65be4\",built_on=\"2020-11-07 08:03 UTC\",} 1.0\n # HELP ensemble_auth_success ensemble_auth_success\n ```\n \n - more details in the [ZOOKEEPER-3982](https://issues.apache.org/jira/browse/ZOOKEEPER-3982)\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;07/Nov/20 08:22;githubbot;600", "Log Work__1": "maoling commented on pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#issuecomment-723439199\n\n\n > Why do you want to expose this value only on Prometheus?\n \n @eolivelli Could you please point out what place else I should expose? `DefaultMetricsProvider`?\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;07/Nov/20 12:19;githubbot;600", "Log Work__2": "pkuwm commented on a change in pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#discussion_r528013978\n\n\n\n##########\nFile path: zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/main/java/org/apache/zookeeper/metrics/prometheus/VersionInfoExports.java\n##########\n@@ -0,0 +1,44 @@\n+package org.apache.zookeeper.metrics.prometheus;\n\nReview comment:\n Hey @maoling, maybe apache license is required?\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;20/Nov/20 22:57;githubbot;600", "Log Work__3": "maoling commented on a change in pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#discussion_r528193191\n\n\n\n##########\nFile path: zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/main/java/org/apache/zookeeper/metrics/prometheus/VersionInfoExports.java\n##########\n@@ -0,0 +1,44 @@\n+package org.apache.zookeeper.metrics.prometheus;\n\nReview comment:\n Oops, I will fix it tomorrow. A little surprising, let me re-push this patch and check whether the CI or checkstyle could detect this license missing issue.\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;21/Nov/20 12:53;githubbot;600", "Log Work__4": "maoling opened a new pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528\n\n\n - Apply this patch, we can export ZooKeeper version as prometheus metric. For example:\n ```\n leader_unavailable_time_sum 0.0\n # HELP zk_version_info ZooKeeper version info\n # TYPE zk_version_info gauge\n zk_version_info{version=\"3.7.0-SNAPSHOT\",revision_hash=\"b761b77a3bf8cd02edaad88a33bafbc8b6c65be4\",built_on=\"2020-11-07 08:03 UTC\",} 1.0\n # HELP ensemble_auth_success ensemble_auth_success\n ```\n \n - more details in the [ZOOKEEPER-3982](https://issues.apache.org/jira/browse/ZOOKEEPER-3982)\n\n\n-- \nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nTo unsubscribe, e-mail: notifications-unsubscribe@zookeeper.apache.org\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;28/Jun/21 02:21;githubbot;600", "Log Work__5": "maoling closed pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528\n\n\n \n\n\n-- \nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nTo unsubscribe, e-mail: notifications-unsubscribe@zookeeper.apache.org\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;28/Jun/21 02:21;githubbot;600", "Log Work__6": "maoling commented on pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#issuecomment-869513158\n\n\n @eolivelli PTAL. Cc @huizhilu \n\n\n-- \nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nTo unsubscribe, e-mail: notifications-unsubscribe@zookeeper.apache.org\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;28/Jun/21 09:09;githubbot;600", "Log Work__7": "eolivelli commented on a change in pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#discussion_r661484410\n\n\n\n##########\nFile path: zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/main/java/org/apache/zookeeper/metrics/prometheus/PrometheusMetricsProvider.java\n##########\n@@ -70,6 +70,7 @@\n private Server server;\n private final MetricsServletImpl servlet = new MetricsServletImpl();\n private final Context rootContext = new Context();\n+ public final CustomizedExports customizedExports = CustomizedExports.instance();\n\nReview comment:\n why \"public\" ?\n it is initialised in `configure` and you can stop it in the close method\n \n no need to do something special in the tests \n\n\n\n\n-- \nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nTo unsubscribe, e-mail: notifications-unsubscribe@zookeeper.apache.org\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;30/Jun/21 13:40;githubbot;600", "Log Work__8": "maoling commented on a change in pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#discussion_r669588617\n\n\n\n##########\nFile path: zookeeper-metrics-providers/zookeeper-prometheus-metrics/src/main/java/org/apache/zookeeper/metrics/prometheus/PrometheusMetricsProvider.java\n##########\n@@ -70,6 +70,7 @@\n private Server server;\n private final MetricsServletImpl servlet = new MetricsServletImpl();\n private final Context rootContext = new Context();\n+ public final CustomizedExports customizedExports = CustomizedExports.instance();\n\nReview comment:\n I need to clean up customizedExports in the PrometheusMetricsProviderTest#setup manually because customizedExports is the text information which will pollute all the existing UTs in the PrometheusMetricsProviderTest\n\n\n\n\n-- \nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nTo unsubscribe, e-mail: notifications-unsubscribe@zookeeper.apache.org\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;14/Jul/21 12:55;githubbot;600", "Log Work__9": "maoling commented on pull request #1528:\nURL: https://github.com/apache/zookeeper/pull/1528#issuecomment-879870905\n\n\n > I am not sure we have to write the version to Prometheus. why do you want do to so ?\n \n @eolivelli \n - The version info is a valuable metric for users to diagnose/report issues although we can find this from \n other ways(e.g., log, JMX, zkServer.sh version).\n - A mature software should have this function in its metric system. Let me give two example:\n \n ```\n Example A:\n JDK exposes its version metric like this:\n jvm_info{version=\"1.8.0_191-b12\",vendor=\"Oracle Corporation\",runtime=\"Java(TM) SE Runtime Environment\",} 1.0\n \n Example B:\n Etcd exposes its version metric like this:\n curl -L http://localhost:2379/metrics\n # HELP etcd_server_version Which version is running. 1 for 'server_version' label with current version.\n # TYPE etcd_server_version gauge\n etcd_server_version{server_version=\"3.3.13\"} 1\n ```\n\n\n-- \nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nTo unsubscribe, e-mail: notifications-unsubscribe@zookeeper.apache.org\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;14/Jul/21 13:01;githubbot;600", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 6000, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 6000, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2020-10-22 01:58:27.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0jwj4:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Add a benchmark tool for testing watch feature performance", "Issue key": "ZOOKEEPER-3823", "Issue id": 13304027, "Parent id": "", "Issue Type": "New Feature", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "11/May/20 07:10", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "scripts", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling opened a new pull request #1406:\nURL: https://github.com/apache/zookeeper/pull/1406\n\n\n - [Here](https://docs.google.com/document/d/1PuYQWnvyDudrsQT9htXD02_pBX_e21xf2t-rYBTuXsU/edit?usp=sharing) is a detailed design document. Copying its abstract here.\n \t\n \n > This watch benchmark report is mainly organized as followed: Section 1 and 2: we introduce the resource, environment and software settings of our benchmark server. Section 3: we talk about the implementations of our watch benchmark tool. Section 4: we evaluate the experimental effects using our watch benchmark tool on the standard cloud machine from four dimensions: server mode, znode count, client threads, watch mode. Section 6: we look forward to our future work\n \n - Link to [PR-1011](https://github.com/apache/zookeeper/pull/1011)\n - A test evidence in `Windows `OS is included in [JIRA](https://issues.apache.org/jira/browse/ZOOKEEPER-3823)\n - More details in [ZOOKEEPER-3823](https://issues.apache.org/jira/browse/ZOOKEEPER-3823)\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;20/Jul/20 13:25;githubbot;600", "Log Work__1": "nkalmar commented on a change in pull request #1406:\nURL: https://github.com/apache/zookeeper/pull/1406#discussion_r466563259\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/server/watch/WatchBenchmarkTool.java\n##########\n@@ -0,0 +1,607 @@\n+/**\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements. See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership. The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License. You may obtain a copy of the License at\n+ *

\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *

\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zookeeper.server.watch;\n+\n+import static java.nio.charset.StandardCharsets.UTF_8;\n+import static org.apache.zookeeper.AddWatchMode.PERSISTENT;\n+import java.io.IOException;\n+import java.math.BigDecimal;\n+import java.math.RoundingMode;\n+import java.util.ArrayList;\n+import java.util.Collections;\n+import java.util.Iterator;\n+import java.util.LinkedList;\n+import java.util.List;\n+import java.util.Vector;\n+import java.util.concurrent.BrokenBarrierException;\n+import java.util.concurrent.ConcurrentHashMap;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.concurrent.CyclicBarrier;\n+import java.util.concurrent.ExecutorService;\n+import java.util.concurrent.Executors;\n+import java.util.concurrent.TimeUnit;\n+import java.util.concurrent.atomic.AtomicBoolean;\n+import java.util.concurrent.atomic.AtomicLong;\n+import org.apache.commons.cli.CommandLine;\n+import org.apache.commons.cli.CommandLineParser;\n+import org.apache.commons.cli.HelpFormatter;\n+import org.apache.commons.cli.Options;\n+import org.apache.commons.cli.PosixParser;\n+import org.apache.commons.lang.RandomStringUtils;\n+import org.apache.commons.lang.StringUtils;\n+import org.apache.zookeeper.CreateMode;\n+import org.apache.zookeeper.KeeperException;\n+import org.apache.zookeeper.WatchedEvent;\n+import org.apache.zookeeper.Watcher;\n+import org.apache.zookeeper.ZooDefs;\n+import org.apache.zookeeper.ZooKeeper;\n+import org.apache.zookeeper.client.ZKClientConfig;\n+import org.apache.zookeeper.common.PathUtils;\n+import org.apache.zookeeper.server.quorum.QuorumPeerConfig;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+/**\n+ * A benchmark tool that benchmarks the watch throughput and latency.\n+ * See ZOOKEEPER-3823 for the design document\n\nReview comment:\n again, I think adding the jira number is unnecessary, as it does not contain a design document, or any further information.\n\n##########\nFile path: zookeeper-docs/src/main/resources/markdown/zookeeperTools.md\n##########\n@@ -425,6 +426,38 @@ All layers compared.\n \n Or use `^c` to exit interactive mode anytime.\n \n+\n+\n+\n+### zkWatchBenchmark.sh\n+- A benchmark tool that benchmarks the watch throughput and latency, which supports multiple clients threads, multiple watch modes\n+- See **ZOOKEEPER-3823** for the design document\n\nReview comment:\n this jira does not contain a design document. I don't think we need to link jira here.\n\n##########\nFile path: zookeeper-docs/src/main/resources/markdown/zookeeperTools.md\n##########\n@@ -425,6 +426,38 @@ All layers compared.\n \n Or use `^c` to exit interactive mode anytime.\n \n+\n+\n+\n+### zkWatchBenchmark.sh\n+- A benchmark tool that benchmarks the watch throughput and latency, which supports multiple clients threads, multiple watch modes\n+- See **ZOOKEEPER-3823** for the design document\n+- Notes:\n+ - `export JVMFLAGS=\"-Xms12g -Xmx12g\"` to have more JVM heap size to avoid `GC overhead limit exceeded` when you have a large scale testing\n+ - `-v` to print a detailed logs when you find no benchmark output result for a long time\n+- Usages:\n+\n+\n+ nohup ./zkWatchBenchmark.sh -root_path /bench-watch -threads 100 -znode_count 1000 -force -connect_string \\n\n\nReview comment:\n I think nohup is unnecessary to include in the example command (while useful here I agree, there are other options, and everyone can decide how to handle the long runtime - at least this is how I see it, not a blocker though)\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/server/watch/WatchBenchmarkTool.java\n##########\n@@ -0,0 +1,607 @@\n+/**\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements. See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership. The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License. You may obtain a copy of the License at\n+ *

\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *

\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zookeeper.server.watch;\n+\n+import static java.nio.charset.StandardCharsets.UTF_8;\n+import static org.apache.zookeeper.AddWatchMode.PERSISTENT;\n+import java.io.IOException;\n+import java.math.BigDecimal;\n+import java.math.RoundingMode;\n+import java.util.ArrayList;\n+import java.util.Collections;\n+import java.util.Iterator;\n+import java.util.LinkedList;\n+import java.util.List;\n+import java.util.Vector;\n+import java.util.concurrent.BrokenBarrierException;\n+import java.util.concurrent.ConcurrentHashMap;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.concurrent.CyclicBarrier;\n+import java.util.concurrent.ExecutorService;\n+import java.util.concurrent.Executors;\n+import java.util.concurrent.TimeUnit;\n+import java.util.concurrent.atomic.AtomicBoolean;\n+import java.util.concurrent.atomic.AtomicLong;\n+import org.apache.commons.cli.CommandLine;\n+import org.apache.commons.cli.CommandLineParser;\n+import org.apache.commons.cli.HelpFormatter;\n+import org.apache.commons.cli.Options;\n+import org.apache.commons.cli.PosixParser;\n+import org.apache.commons.lang.RandomStringUtils;\n+import org.apache.commons.lang.StringUtils;\n+import org.apache.zookeeper.CreateMode;\n+import org.apache.zookeeper.KeeperException;\n+import org.apache.zookeeper.WatchedEvent;\n+import org.apache.zookeeper.Watcher;\n+import org.apache.zookeeper.ZooDefs;\n+import org.apache.zookeeper.ZooKeeper;\n+import org.apache.zookeeper.client.ZKClientConfig;\n+import org.apache.zookeeper.common.PathUtils;\n+import org.apache.zookeeper.server.quorum.QuorumPeerConfig;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+/**\n+ * A benchmark tool that benchmarks the watch throughput and latency.\n+ * See ZOOKEEPER-3823 for the design document\n+ */\n+\n+public class WatchBenchmarkTool {\n+ private static final Logger LOG = LoggerFactory.getLogger(WatchBenchmarkTool.class);\n+\n+ private static final ConcurrentHashMap watchTriggerTimeMap = new ConcurrentHashMap<>();\n+ private static final List latencyList = new Vector<>();\n+ private static AtomicLong totalStartTriggerWatchTime = new AtomicLong(0);\n+ private static int timeout;\n+ private static boolean isDebug;\n+\n+ private static String rootPath;\n+ private static int znodeCount;\n+ private static int znodeSize = 1;\n+ private static int clientThreads;\n+ private static String connectString;\n+ private static int sessionTimeout;\n+ private static String configFilePath;\n+ private static String watchMode;\n+ private static int watchMultiple = 1;\n+\n+ public static void main(String[] args) throws Exception {\n+ long totalStartTime = System.currentTimeMillis();\n+ Options options = new Options();\n+ options.addOption(\"connect_string\", true, \"ZooKeeper connectString. Default: 127.0.0.1:2181\");\n+ options.addOption(\"root_path\", true, \"Root Path for creating znodes for the benchmark. Not empty\");\n+ options.addOption(\"znode_count\", true, \"The znode count. Default: 1000\");\n+ options.addOption(\"znode_size\", true, \"The data length of per znode. Default: 1\");\n+ options.addOption(\"threads\", true, \"The client thread number. Default: 1\");\n+ options.addOption(\"session_timeout\", true, \"ZooKeeper sessionTimeout. Default: 40000 ms\");\n+ options.addOption(\"force\", false, \"Force to run the benchmark, even if root_path exists\");\n+ options.addOption(\"timeout\", true, \"Timeout for waiting for all watch events arrival. Default: 10000 ms\");\n+ options.addOption(\"client_configuration\", true, \"Client configuration file to set some special client setting. Default: empty\");\n+ options.addOption(\"watch_mode\", true, \"Watch mode. Optional value is t or p, corresponding to traditional one-off watch or persistent watch. Default: t\");\n+ options.addOption(\"watch_multiple\", true, \"Watch multiple times when enables persistent watch. Default: 1\");\n+ options.addOption(\"v\", false, \"Verbose output, print some logs for debugging\");\n+ options.addOption(\"help\", false, \"Help message\");\n+\n+ CommandLineParser parser = new PosixParser();\n+ CommandLine cmd = parser.parse(options, args);\n+\n+ if (args.length == 0 || cmd.hasOption(\"help\")) {\n+ usage(options);\n+ System.exit(-1);\n+ }\n+\n+ checkParameters(cmd);\n+\n+ // submit tasks to thread pool\n+ ExecutorService executorService = Executors.newFixedThreadPool(clientThreads);\n+ CyclicBarrier createNodeCyclicBarrier = new CyclicBarrier(clientThreads);\n+ CyclicBarrier setWatchCyclicBarrier = new CyclicBarrier(clientThreads);\n+ CountDownLatch deleteNodeCountDownLatch = new CountDownLatch(clientThreads);\n+ CountDownLatch finishWatchCountDownLatch = new CountDownLatch(watchMultiple * clientThreads * znodeCount);\n+ CountDownLatch closeClientCountDownLatch = new CountDownLatch(1);\n+ AtomicBoolean syncOnce = new AtomicBoolean(false);\n+ for (int i = 0; i < clientThreads; i++) {\n+ executorService.execute(new WatchClientThread(i, createNodeCyclicBarrier,\n+ setWatchCyclicBarrier, deleteNodeCountDownLatch, finishWatchCountDownLatch, closeClientCountDownLatch, syncOnce));\n+ }\n+\n+ // wait for deleting all nodes\n+ long deleteAwaitStart = System.currentTimeMillis();\n+ deleteNodeCountDownLatch.await();\n+ if (isDebug) {\n\nReview comment:\n For readability, I would name this \"isVerbose\" or something similar. \n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/server/watch/WatchBenchmarkTool.java\n##########\n@@ -0,0 +1,607 @@\n+/**\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements. See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership. The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License. You may obtain a copy of the License at\n+ *

\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *

\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zookeeper.server.watch;\n+\n+import static java.nio.charset.StandardCharsets.UTF_8;\n+import static org.apache.zookeeper.AddWatchMode.PERSISTENT;\n+import java.io.IOException;\n+import java.math.BigDecimal;\n+import java.math.RoundingMode;\n+import java.util.ArrayList;\n+import java.util.Collections;\n+import java.util.Iterator;\n+import java.util.LinkedList;\n+import java.util.List;\n+import java.util.Vector;\n+import java.util.concurrent.BrokenBarrierException;\n+import java.util.concurrent.ConcurrentHashMap;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.concurrent.CyclicBarrier;\n+import java.util.concurrent.ExecutorService;\n+import java.util.concurrent.Executors;\n+import java.util.concurrent.TimeUnit;\n+import java.util.concurrent.atomic.AtomicBoolean;\n+import java.util.concurrent.atomic.AtomicLong;\n+import org.apache.commons.cli.CommandLine;\n+import org.apache.commons.cli.CommandLineParser;\n+import org.apache.commons.cli.HelpFormatter;\n+import org.apache.commons.cli.Options;\n+import org.apache.commons.cli.PosixParser;\n+import org.apache.commons.lang.RandomStringUtils;\n+import org.apache.commons.lang.StringUtils;\n+import org.apache.zookeeper.CreateMode;\n+import org.apache.zookeeper.KeeperException;\n+import org.apache.zookeeper.WatchedEvent;\n+import org.apache.zookeeper.Watcher;\n+import org.apache.zookeeper.ZooDefs;\n+import org.apache.zookeeper.ZooKeeper;\n+import org.apache.zookeeper.client.ZKClientConfig;\n+import org.apache.zookeeper.common.PathUtils;\n+import org.apache.zookeeper.server.quorum.QuorumPeerConfig;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+/**\n+ * A benchmark tool that benchmarks the watch throughput and latency.\n+ * See ZOOKEEPER-3823 for the design document\n+ */\n+\n+public class WatchBenchmarkTool {\n+ private static final Logger LOG = LoggerFactory.getLogger(WatchBenchmarkTool.class);\n+\n+ private static final ConcurrentHashMap watchTriggerTimeMap = new ConcurrentHashMap<>();\n+ private static final List latencyList = new Vector<>();\n+ private static AtomicLong totalStartTriggerWatchTime = new AtomicLong(0);\n+ private static int timeout;\n+ private static boolean isDebug;\n+\n+ private static String rootPath;\n+ private static int znodeCount;\n+ private static int znodeSize = 1;\n+ private static int clientThreads;\n+ private static String connectString;\n+ private static int sessionTimeout;\n+ private static String configFilePath;\n+ private static String watchMode;\n+ private static int watchMultiple = 1;\n+\n+ public static void main(String[] args) throws Exception {\n+ long totalStartTime = System.currentTimeMillis();\n+ Options options = new Options();\n+ options.addOption(\"connect_string\", true, \"ZooKeeper connectString. Default: 127.0.0.1:2181\");\n+ options.addOption(\"root_path\", true, \"Root Path for creating znodes for the benchmark. Not empty\");\n+ options.addOption(\"znode_count\", true, \"The znode count. Default: 1000\");\n+ options.addOption(\"znode_size\", true, \"The data length of per znode. Default: 1\");\n+ options.addOption(\"threads\", true, \"The client thread number. Default: 1\");\n+ options.addOption(\"session_timeout\", true, \"ZooKeeper sessionTimeout. Default: 40000 ms\");\n+ options.addOption(\"force\", false, \"Force to run the benchmark, even if root_path exists\");\n+ options.addOption(\"timeout\", true, \"Timeout for waiting for all watch events arrival. Default: 10000 ms\");\n+ options.addOption(\"client_configuration\", true, \"Client configuration file to set some special client setting. Default: empty\");\n+ options.addOption(\"watch_mode\", true, \"Watch mode. Optional value is t or p, corresponding to traditional one-off watch or persistent watch. Default: t\");\n+ options.addOption(\"watch_multiple\", true, \"Watch multiple times when enables persistent watch. Default: 1\");\n+ options.addOption(\"v\", false, \"Verbose output, print some logs for debugging\");\n+ options.addOption(\"help\", false, \"Help message\");\n+\n+ CommandLineParser parser = new PosixParser();\n+ CommandLine cmd = parser.parse(options, args);\n+\n+ if (args.length == 0 || cmd.hasOption(\"help\")) {\n+ usage(options);\n+ System.exit(-1);\n+ }\n+\n+ checkParameters(cmd);\n+\n+ // submit tasks to thread pool\n+ ExecutorService executorService = Executors.newFixedThreadPool(clientThreads);\n+ CyclicBarrier createNodeCyclicBarrier = new CyclicBarrier(clientThreads);\n+ CyclicBarrier setWatchCyclicBarrier = new CyclicBarrier(clientThreads);\n+ CountDownLatch deleteNodeCountDownLatch = new CountDownLatch(clientThreads);\n+ CountDownLatch finishWatchCountDownLatch = new CountDownLatch(watchMultiple * clientThreads * znodeCount);\n+ CountDownLatch closeClientCountDownLatch = new CountDownLatch(1);\n+ AtomicBoolean syncOnce = new AtomicBoolean(false);\n+ for (int i = 0; i < clientThreads; i++) {\n+ executorService.execute(new WatchClientThread(i, createNodeCyclicBarrier,\n+ setWatchCyclicBarrier, deleteNodeCountDownLatch, finishWatchCountDownLatch, closeClientCountDownLatch, syncOnce));\n+ }\n+\n+ // wait for deleting all nodes\n+ long deleteAwaitStart = System.currentTimeMillis();\n+ deleteNodeCountDownLatch.await();\n+ if (isDebug) {\n+ LOG.info(\"deleteNodeCountDownLatch await time spent: {} ms\", (System.currentTimeMillis() - deleteAwaitStart));\n+ }\n+\n+ /** wait for all watch events arrival, especially network latency or overhead workloads\n+ * In most cases, when znodes have been deleted, most of the watch events has been notified\n+ */\n+ long finishWatchAwaitStart = System.currentTimeMillis();\n+ boolean finishAwaitFlag = finishWatchCountDownLatch.await(timeout, TimeUnit.MILLISECONDS);\n+ if (isDebug) {\n+ LOG.info(\"finishWatchCountDownLatch await time spent: {} ms, awaitFlag:{}\", (System.currentTimeMillis() - finishWatchAwaitStart), finishAwaitFlag);\n+ }\n+ long latencyListSnapshotSize = latencyList.size();\n+ long endTime = System.currentTimeMillis();\n+ long totalWatchSpentTime = endTime - totalStartTriggerWatchTime.longValue();\n+ if (isDebug) {\n+ LOG.info(\"totalStartTriggerWatchTime: {}, endTime: {}, totalWatchSpentTime: {} ms \", totalStartTriggerWatchTime, endTime, totalWatchSpentTime);\n+ }\n+\n+ // close all the zk clients\n+ closeClientCountDownLatch.countDown();\n+ // shutdown thread pool\n+ shutDownThreadPool(executorService);\n+ // show the summary\n+ showBenchmarkReport(totalStartTime, totalWatchSpentTime, latencyListSnapshotSize);\n+ }\n+\n+ private static void showBenchmarkReport(long totalStartTime, long totalWatchSpentTime, long latencyListSnapshotSize) {\n+ if (latencyListSnapshotSize == 0) {\n+ System.out.println(\"Latency list is empty, cannot show the benchmark report\");\n+ return;\n+ }\n+\n+ /**\n+ * A deep copy of the latencyList, to avoid this situation when we statistics latencyList\n+ * at the same time, watch events in flight are added to latencyList concurrently.\n+ */\n+ List copyLatencyList = new LinkedList<>();\n+ copyLatencyList.addAll(latencyList);\n+ // Now, we can clear the latencyList to save the memory\n+ latencyList.clear();\n+\n+ // receive, loss notifications count and ratio summary\n+ double receivedRatio = (double) copyLatencyList.size() / (double) (watchMultiple * clientThreads * znodeCount);\n+ long lossCount = watchMultiple * clientThreads * znodeCount - copyLatencyList.size();\n+ double lossRatio = (double) lossCount / (double) (watchMultiple * clientThreads * znodeCount);\n+ System.out.println();\n+ System.out.println(\"Notification expected count: \" + (watchMultiple * clientThreads * znodeCount)\n+ + \", received count: \" + copyLatencyList.size() + \" (\" + getFormatedDouble(receivedRatio) + \")\"\n+ + \", loss count: \" + lossCount + \" (\" + getFormatedDouble(lossRatio) + \")\");\n+\n+ // latency distribution\n+ printLatencyDistribution(copyLatencyList);\n+\n+ // throughput\n+ double timeInμsPerNotification = (double) (totalWatchSpentTime * 1000) / (double) latencyListSnapshotSize;\n+ if (isDebug) {\n+ LOG.info(\"timeInμsPerNotification: {} μs, latencyListSnapshotSize:{}, latencyList.size():{}\", timeInμsPerNotification, latencyListSnapshotSize, latencyList.size());\n+ }\n+ System.out.println(\"Total time:\" + (System.currentTimeMillis() - totalStartTime) + \" ms, watch benchmark total time: \"\n+ + totalWatchSpentTime + \" ms, throughput:\" + getFormatedDouble(1000 * 1000 / timeInμsPerNotification) + \" op/s\");\n+\n+ }\n+\n+ private static void shutDownThreadPool(ExecutorService executorService) {\n+ long shutDownStart = System.currentTimeMillis();\n+ executorService.shutdown();\n+ while (true) {\n\nReview comment:\n executorService.awaitTermination(); isntead?\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;06/Aug/20 17:25;githubbot;600", "Log Work__2": "sonatype-lift[bot] commented on code in PR #1406:\nURL: https://github.com/apache/zookeeper/pull/1406#discussion_r961613431\n\n\n##########\nzookeeper-server/src/main/java/org/apache/zookeeper/server/watch/WatchBenchmarkTool.java:\n##########\n@@ -0,0 +1,607 @@\n+/**\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements. See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership. The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License. You may obtain a copy of the License at\n+ *

\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *

\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zookeeper.server.watch;\n+\n+import static java.nio.charset.StandardCharsets.UTF_8;\n+import static org.apache.zookeeper.AddWatchMode.PERSISTENT;\n+import java.io.IOException;\n+import java.math.BigDecimal;\n+import java.math.RoundingMode;\n+import java.util.ArrayList;\n+import java.util.Collections;\n+import java.util.Iterator;\n+import java.util.LinkedList;\n+import java.util.List;\n+import java.util.Vector;\n+import java.util.concurrent.BrokenBarrierException;\n+import java.util.concurrent.ConcurrentHashMap;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.concurrent.CyclicBarrier;\n+import java.util.concurrent.ExecutorService;\n+import java.util.concurrent.Executors;\n+import java.util.concurrent.TimeUnit;\n+import java.util.concurrent.atomic.AtomicBoolean;\n+import java.util.concurrent.atomic.AtomicLong;\n+import org.apache.commons.cli.CommandLine;\n+import org.apache.commons.cli.CommandLineParser;\n+import org.apache.commons.cli.HelpFormatter;\n+import org.apache.commons.cli.Options;\n+import org.apache.commons.cli.PosixParser;\n+import org.apache.commons.lang.RandomStringUtils;\n+import org.apache.commons.lang.StringUtils;\n+import org.apache.zookeeper.CreateMode;\n+import org.apache.zookeeper.KeeperException;\n+import org.apache.zookeeper.WatchedEvent;\n+import org.apache.zookeeper.Watcher;\n+import org.apache.zookeeper.ZooDefs;\n+import org.apache.zookeeper.ZooKeeper;\n+import org.apache.zookeeper.client.ZKClientConfig;\n+import org.apache.zookeeper.common.PathUtils;\n+import org.apache.zookeeper.server.quorum.QuorumPeerConfig;\n+import org.slf4j.Logger;\n+import org.slf4j.LoggerFactory;\n+\n+/**\n+ * A benchmark tool that benchmarks the watch throughput and latency.\n+ * See ZOOKEEPER-3823 for the design document\n+ */\n+\n+public class WatchBenchmarkTool {\n+ private static final Logger LOG = LoggerFactory.getLogger(WatchBenchmarkTool.class);\n+\n+ private static final ConcurrentHashMap watchTriggerTimeMap = new ConcurrentHashMap<>();\n+ private static final List latencyList = new Vector<>();\n+ private static AtomicLong totalStartTriggerWatchTime = new AtomicLong(0);\n+ private static int timeout;\n+ private static boolean isDebug;\n+\n+ private static String rootPath;\n+ private static int znodeCount;\n+ private static int znodeSize = 1;\n+ private static int clientThreads;\n+ private static String connectString;\n+ private static int sessionTimeout;\n+ private static String configFilePath;\n+ private static String watchMode;\n+ private static int watchMultiple = 1;\n+\n+ public static void main(String[] args) throws Exception {\n+ long totalStartTime = System.currentTimeMillis();\n+ Options options = new Options();\n+ options.addOption(\"connect_string\", true, \"ZooKeeper connectString. Default: 127.0.0.1:2181\");\n+ options.addOption(\"root_path\", true, \"Root Path for creating znodes for the benchmark. Not empty\");\n+ options.addOption(\"znode_count\", true, \"The znode count. Default: 1000\");\n+ options.addOption(\"znode_size\", true, \"The data length of per znode. Default: 1\");\n+ options.addOption(\"threads\", true, \"The client thread number. Default: 1\");\n+ options.addOption(\"session_timeout\", true, \"ZooKeeper sessionTimeout. Default: 40000 ms\");\n+ options.addOption(\"force\", false, \"Force to run the benchmark, even if root_path exists\");\n+ options.addOption(\"timeout\", true, \"Timeout for waiting for all watch events arrival. Default: 10000 ms\");\n+ options.addOption(\"client_configuration\", true, \"Client configuration file to set some special client setting. Default: empty\");\n+ options.addOption(\"watch_mode\", true, \"Watch mode. Optional value is t or p, corresponding to traditional one-off watch or persistent watch. Default: t\");\n+ options.addOption(\"watch_multiple\", true, \"Watch multiple times when enables persistent watch. Default: 1\");\n+ options.addOption(\"v\", false, \"Verbose output, print some logs for debugging\");\n+ options.addOption(\"help\", false, \"Help message\");\n+\n+ CommandLineParser parser = new PosixParser();\n+ CommandLine cmd = parser.parse(options, args);\n+\n+ if (args.length == 0 || cmd.hasOption(\"help\")) {\n+ usage(options);\n+ System.exit(-1);\n+ }\n+\n+ checkParameters(cmd);\n+\n+ // submit tasks to thread pool\n+ ExecutorService executorService = Executors.newFixedThreadPool(clientThreads);\n+ CyclicBarrier createNodeCyclicBarrier = new CyclicBarrier(clientThreads);\n+ CyclicBarrier setWatchCyclicBarrier = new CyclicBarrier(clientThreads);\n+ CountDownLatch deleteNodeCountDownLatch = new CountDownLatch(clientThreads);\n+ CountDownLatch finishWatchCountDownLatch = new CountDownLatch(watchMultiple * clientThreads * znodeCount);\n+ CountDownLatch closeClientCountDownLatch = new CountDownLatch(1);\n+ AtomicBoolean syncOnce = new AtomicBoolean(false);\n+ for (int i = 0; i < clientThreads; i++) {\n+ executorService.execute(new WatchClientThread(i, createNodeCyclicBarrier,\n+ setWatchCyclicBarrier, deleteNodeCountDownLatch, finishWatchCountDownLatch, closeClientCountDownLatch, syncOnce));\n+ }\n+\n+ // wait for deleting all nodes\n+ long deleteAwaitStart = System.currentTimeMillis();\n+ deleteNodeCountDownLatch.await();\n+ if (isDebug) {\n+ LOG.info(\"deleteNodeCountDownLatch await time spent: {} ms\", (System.currentTimeMillis() - deleteAwaitStart));\n+ }\n+\n+ /** wait for all watch events arrival, especially network latency or overhead workloads\n+ * In most cases, when znodes have been deleted, most of the watch events has been notified\n+ */\n+ long finishWatchAwaitStart = System.currentTimeMillis();\n+ boolean finishAwaitFlag = finishWatchCountDownLatch.await(timeout, TimeUnit.MILLISECONDS);\n+ if (isDebug) {\n+ LOG.info(\"finishWatchCountDownLatch await time spent: {} ms, awaitFlag:{}\", (System.currentTimeMillis() - finishWatchAwaitStart), finishAwaitFlag);\n+ }\n+ long latencyListSnapshotSize = latencyList.size();\n+ long endTime = System.currentTimeMillis();\n+ long totalWatchSpentTime = endTime - totalStartTriggerWatchTime.longValue();\n+ if (isDebug) {\n+ LOG.info(\"totalStartTriggerWatchTime: {}, endTime: {}, totalWatchSpentTime: {} ms \", totalStartTriggerWatchTime, endTime, totalWatchSpentTime);\n+ }\n+\n+ // close all the zk clients\n+ closeClientCountDownLatch.countDown();\n+ // shutdown thread pool\n+ shutDownThreadPool(executorService);\n+ // show the summary\n+ showBenchmarkReport(totalStartTime, totalWatchSpentTime, latencyListSnapshotSize);\n+ }\n+\n+ private static void showBenchmarkReport(long totalStartTime, long totalWatchSpentTime, long latencyListSnapshotSize) {\n+ if (latencyListSnapshotSize == 0) {\n+ System.out.println(\"Latency list is empty, cannot show the benchmark report\");\n+ return;\n+ }\n+\n+ /**\n+ * A deep copy of the latencyList, to avoid this situation when we statistics latencyList\n+ * at the same time, watch events in flight are added to latencyList concurrently.\n+ */\n+ List copyLatencyList = new LinkedList<>();\n+ copyLatencyList.addAll(latencyList);\n+ // Now, we can clear the latencyList to save the memory\n+ latencyList.clear();\n+\n+ // receive, loss notifications count and ratio summary\n+ double receivedRatio = (double) copyLatencyList.size() / (double) (watchMultiple * clientThreads * znodeCount);\n+ long lossCount = watchMultiple * clientThreads * znodeCount - copyLatencyList.size();\n+ double lossRatio = (double) lossCount / (double) (watchMultiple * clientThreads * znodeCount);\n+ System.out.println();\n+ System.out.println(\"Notification expected count: \" + (watchMultiple * clientThreads * znodeCount)\n+ + \", received count: \" + copyLatencyList.size() + \" (\" + getFormatedDouble(receivedRatio) + \")\"\n+ + \", loss count: \" + lossCount + \" (\" + getFormatedDouble(lossRatio) + \")\");\n+\n+ // latency distribution\n+ printLatencyDistribution(copyLatencyList);\n+\n+ // throughput\n+ double timeInμsPerNotification = (double) (totalWatchSpentTime * 1000) / (double) latencyListSnapshotSize;\n+ if (isDebug) {\n+ LOG.info(\"timeInμsPerNotification: {} μs, latencyListSnapshotSize:{}, latencyList.size():{}\", timeInμsPerNotification, latencyListSnapshotSize, latencyList.size());\n+ }\n+ System.out.println(\"Total time:\" + (System.currentTimeMillis() - totalStartTime) + \" ms, watch benchmark total time: \"\n+ + totalWatchSpentTime + \" ms, throughput:\" + getFormatedDouble(1000 * 1000 / timeInμsPerNotification) + \" op/s\");\n+\n+ }\n+\n+ private static void shutDownThreadPool(ExecutorService executorService) {\n+ long shutDownStart = System.currentTimeMillis();\n+ executorService.shutdown();\n+ while (true) {\n+ try {\n+ if (executorService.isTerminated()) {\n+ break;\n+ }\n+ Thread.sleep(200);\n+ } catch (Exception e) {\n+ e.printStackTrace();\n+ }\n+ }\n+ if (isDebug) {\n+ LOG.info(\"Shutdown all the WatchClientThread in {} ms \", (System.currentTimeMillis() - shutDownStart));\n+ }\n+ }\n+\n+ private static void usage(Options options) {\n+ HelpFormatter formatter = new HelpFormatter();\n+ formatter.printHelp(\"WatchBenchmarkTool \", options);\n+ }\n+\n+ private static void checkParameters(CommandLine cmd) {\n+ // root_path\n+ rootPath = cmd.getOptionValue(\"root_path\");\n+ PathUtils.validatePath(rootPath);\n+ if (\"/\".equals(rootPath)) {\n+ throw new IllegalArgumentException(\"root_path must not be set with '/'\");\n+ }\n+\n+ sessionTimeout = Integer.parseInt(cmd.getOptionValue(\"session_timeout\", \"40000\"));\n+ checkOptionNumber(\"session_timeout\", sessionTimeout, 0);\n+ connectString = cmd.getOptionValue(\"connect_string\", \"127.0.0.1:2181\");\n+ configFilePath = cmd.getOptionValue(\"client_configuration\");\n+ // znodes\n+ znodeCount = Integer.parseInt(cmd.getOptionValue(\"znode_count\", \"1000\"));\n+ checkOptionNumber(\"znode_count\", znodeCount, 0);\n+ // znode_size\n+ znodeSize = Integer.parseInt(cmd.getOptionValue(\"znode_size\", \"1\"));\n+ checkOptionNumber(\"znode_size\", znodeSize, 0);\n+ // threads\n+ clientThreads = Integer.parseInt(cmd.getOptionValue(\"threads\", \"1\"));\n+ checkOptionNumber(\"threads\", clientThreads, 0);\n+ if (clientThreads > 60) {\n+ LOG.warn(\"The clientThreads set {} has exceeded the default maxClientCnxns value:60. Note you should also set this property in the server side\", clientThreads);\n+ }\n+ timeout = Integer.parseInt(cmd.getOptionValue(\"timeout\", \"10000\"));\n+ checkOptionNumber(\"timeout\", timeout, 0);\n+ isDebug = cmd.hasOption(\"v\");\n+ // watch_mode\n+ watchMode = cmd.getOptionValue(\"watch_mode\", \"t\");\n+ if (watchMode.equals(WatchMode.TRADITION.getAbbreviation()) && cmd.hasOption(\"watch_multiple\")) {\n+ throw new IllegalArgumentException(\"watch_multiple must not be set in the traditional one-off watch mode\");\n+ }\n+ if (WatchMode.getValue(watchMode) == null) {\n+ throw new IllegalArgumentException(\"don't support this watch mode option: \" + watchMode);\n+ }\n+ // watch_multiple\n+ watchMultiple = Integer.parseInt(cmd.getOptionValue(\"watch_multiple\", \"1\"));\n+ checkOptionNumber(\"watch_multiple\", watchMultiple, 0);\n+ if (watchMode.equals(WatchMode.PERSISTENT.getAbbreviation())) {\n+ LOG.warn(\"The PERSISTENT watch is available since 3.6.0, please make sure the release version of ZooKeeper server\");\n+ }\n+\n+ createWorkSpace(cmd);\n+ }\n+\n+ private static void checkOptionNumber(String optionName, int optionVal, int threshold) {\n+ if (optionVal <= threshold) {\n+ throw new IllegalArgumentException(optionName + \" must be greater than \" + threshold);\n+ }\n+ }\n+\n+ private static void createWorkSpace(CommandLine cmd) {\n+ try {\n+ ZooKeeper zk = initZKClient();\n+ if (zk.exists(rootPath, null) != null) {\n+ if (!cmd.hasOption(\"force\")) {\n+ throw new IllegalArgumentException(\"cannot test under the existing rootPath:\" + rootPath + \" without force option\");\n+ }\n+ } else {\n+ // help user to create the znode: rootPath\n+ String[] paths = rootPath.split(\"/\");\n+ StringBuilder sb = new StringBuilder();\n+ for (int i = 1; i < paths.length; i++) {\n+ sb.append(\"/\" + paths[i]);\n+ try {\n+ zk.create(sb.toString(), \"\".getBytes(UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE,\n+ CreateMode.PERSISTENT);\n+ } catch (KeeperException.NodeExistsException e) {\n+ // ignore it\n+ }\n+ }\n+ }\n+ } catch (IOException | InterruptedException | KeeperException | QuorumPeerConfig.ConfigException e) {\n+ e.printStackTrace();\n+ System.exit(-1);\n+ }\n+ }\n+\n+ private static ZooKeeper initZKClient() throws IOException, QuorumPeerConfig.ConfigException {\n+ ZooKeeper zk;\n+ if (StringUtils.isBlank(configFilePath)) {\n+ zk = new ZooKeeper(connectString, sessionTimeout, null);\n+ } else {\n+ ZKClientConfig config = new ZKClientConfig(configFilePath);\n+ zk = new ZooKeeper(connectString, sessionTimeout, null, false, config);\n+ }\n+ return zk;\n+ }\n+\n+ private static void printLatencyDistribution(List copyLatencyList) {\n+ long start = System.currentTimeMillis();\n+ Collections.sort(copyLatencyList);\n+ long end = System.currentTimeMillis();\n+ if (isDebug) {\n+ LOG.info(\"sort the latencyList(size: {}) time spent: {} ms\", copyLatencyList.size(), (end - start));\n+ }\n+\n+ /**\n+ * filter out the invalid watch latency which we cannot figure out its start trigger watch time when setting watch multiply\n+ * times in PERSISTENT watch mode\n+ */\n+ filterLatencyList(copyLatencyList);\n+ if (isDebug) {\n+ LOG.info(\"filter out LatencyList(size: {}) time spent: {} ms\", copyLatencyList.size(), (System.currentTimeMillis() - end));\n+ }\n+ if (copyLatencyList.size() == 0) {\n+ System.out.println(\"Latency list is empty, cannot print latency distribution\");\n+ return;\n+ }\n+ System.out.println(\"[Latency distribution]: \");\n+ System.out.println(\"Avg latency: \" + getFormatedDouble(getAvgLatency(copyLatencyList)) + \" ms\");\n+ System.out.println(\"Fastest latency: \" + getFormatedDouble(getFastestLatency(copyLatencyList)) + \" ms\");\n+ System.out.println(\"Slowest latency: \" + getFormatedDouble(getSlowestLatency(copyLatencyList)) + \" ms\");\n+\n+ List percentileList = new ArrayList<>();\n+ percentileList.add(10);\n+ percentileList.add(25);\n+ percentileList.add(50);\n+ percentileList.add(75);\n+ percentileList.add(90);\n+ percentileList.add(95);\n+ percentileList.add(99);\n+ List resultList = percentile(copyLatencyList, percentileList);\n+ if (percentileList.size() != resultList.size()) {\n+ LOG.info(\"percentileList.size():{} is not equal to resultList.size():{}\", percentileList.size(), resultList.size());\n+ return;\n+ }\n+ for (int i = 0; i < percentileList.size(); i++) {\n+ Integer percentile = percentileList.get(i);\n+ System.out.println(percentile + \"th percentile notification latency: \" + resultList.get(i) + \" ms\");\n+ }\n+ }\n+\n+ private static void filterLatencyList(List copyLatencyList) {\n+ Iterator iterator = copyLatencyList.iterator();\n+ while (iterator.hasNext()) {\n+ Long value = iterator.next();\n+ if (value <= 0) {\n+ iterator.remove();\n+ } else {\n+ break;\n+ }\n+ }\n+ }\n+\n+ private static double getSlowestLatency(List latencyList) {\n+ if (latencyList.size() == 0) {\n+ return -1;\n+ }\n+ return latencyList.get(latencyList.size() - 1);\n+ }\n+\n+ private static double getFastestLatency(List latencyList) {\n+ if (latencyList.size() == 0) {\n+ return -1;\n+ }\n+ return (double) latencyList.get(0);\n+ }\n+\n+ private static double getAvgLatency(List latencyList) {\n+ if (latencyList.size() == 0) {\n+ return -1;\n+ }\n+ long total = 0;\n+ for (Long latency : latencyList) {\n+ total += latency;\n+ }\n+ return (double) total / (double) latencyList.size();\n+ }\n+\n+ private static double getFormatedDouble(double value) {\n+ BigDecimal bg = new BigDecimal(value);\n+ return bg.setScale(4, RoundingMode.HALF_UP).doubleValue();\n+ }\n+\n+ private static List percentile(List latency, List percentiles) {\n+ int size = latency.size();\n+ List resultList = new ArrayList<>();\n+ if (size == 0) {\n+ return resultList;\n+ }\n+ for (Integer percentile : percentiles) {\n+ double percent = (double) percentile / 100;\n+ int sampleSize = (int) (size * percent);\n+ resultList.add(latency.get(sampleSize - 1 < 0 ? 0 : sampleSize - 1));\n+ }\n+ return resultList;\n+ }\n+\n+ /**\n+ * WatchClientThread does the following things:\n+ * create corresponding znodes if needed(when threads > znodes, some threads don't do this operation)\n+ * set watch for all znodes\n+ * trigger watch by issuing write requests\n+ * delete corresponding znodes if needed(when threads > znodes, some threads don't do this operation)\n+ * close zk client\n+ */\n+ static class WatchClientThread implements Runnable {\n+ private Integer threadIndex;\n+ private CyclicBarrier createNodeCyclicBarrier;\n+ private CyclicBarrier setWatchCyclicBarrier;\n+ private CountDownLatch deleteNodeCountDownLatch;\n+ private CountDownLatch finishWatchCountDownLatch;\n+ private CountDownLatch closeClientCountDownLatch;\n+ private AtomicBoolean syncOnce;\n+\n+ public WatchClientThread(Integer threadIndex, CyclicBarrier createNodeCyclicBarrier,\n+ CyclicBarrier setWatchCyclicBarrier, CountDownLatch deleteNodeCountDownLatch,\n+ CountDownLatch finishWatchCountDownLatch, CountDownLatch closeClientCountDownLatch, AtomicBoolean syncOnce) {\n+ this.threadIndex = threadIndex;\n+ this.createNodeCyclicBarrier = createNodeCyclicBarrier;\n+ this.setWatchCyclicBarrier = setWatchCyclicBarrier;\n+ this.deleteNodeCountDownLatch = deleteNodeCountDownLatch;\n+ this.finishWatchCountDownLatch = finishWatchCountDownLatch;\n+ this.closeClientCountDownLatch = closeClientCountDownLatch;\n+ this.syncOnce = syncOnce;\n+ }\n+\n+ @Override\n+ public void run() {\n+ ZooKeeper zk = null;\n+ try {\n+ zk = initZKClient();\n+\n+ // create\n+ createNode(zk);\n+ // block here waiting for all the threads creating its corresponding znodes, then go ahead together\n+ createNodeCyclicBarrier.await();\n+ if (isDebug) {\n+ LOG.info(\"WatchClientThread (threadIndex:{}) has finished creating its corresponding znodes\", threadIndex);\n+ }\n+\n+ // set watch\n+ SimpleWatcher simpleWatcher = new SimpleWatcher(finishWatchCountDownLatch);\n+ setWatchForAllNodes(zk, simpleWatcher);\n+ // block here waiting for all the threads setting watch for all znodes, then go ahead together\n+ setWatchCyclicBarrier.await();\n+ if (isDebug) {\n+ LOG.info(\"WatchClientThread (threadIndex:{}) has finished setting watch for all znodes\", threadIndex);\n+ }\n+\n+ // make sure only one thread(the fastest one) enters this code to record/assign the total start trigger Watch Time\n+ if (syncOnce.compareAndSet(false, true)) {\n+ totalStartTriggerWatchTime = new AtomicLong(System.currentTimeMillis());\n+ }\n+\n+ // start to trigger watch by issuing write requests\n+ // setData\n+ setNode(zk);\n+ // delete, also as a function to clean up the workspace\n+ deleteNode(zk);\n+ deleteNodeCountDownLatch.countDown();\n+ if (isDebug) {\n+ LOG.info(\"WatchClientThread (threadIndex:{}) has finished deleting its corresponding znodes\", threadIndex);\n+ }\n+ } catch (InterruptedException | BrokenBarrierException | IOException | QuorumPeerConfig.ConfigException e) {\n+ LOG.warn(\"WatchClientThread (threadIndex:{}) encounters exception\", threadIndex, e);\n+ } finally {\n+ if (zk != null) {\n+ try {\n+ if (isDebug) {\n+ LOG.info(\"WatchClientThread (threadIndex:{}) has started to close the zk client\", threadIndex);\n+ }\n+ closeClientCountDownLatch.await();\n+ zk.close();\n+ } catch (InterruptedException e) {\n+ e.printStackTrace();\n+ }\n+ }\n+ }\n+ if (isDebug) {\n+ LOG.info(\"WatchClientThread (threadIndex:{}) has finished its task and exited\", threadIndex);\n+ }\n+ }\n+\n+ private void createNode(ZooKeeper zk) {\n+ for (int i = 0; (i * clientThreads + threadIndex) < znodeCount; i++) {\n+ int path = (i * clientThreads + threadIndex);\n+ try {\n+ String data = RandomStringUtils.randomAlphanumeric(znodeSize);\n+ zk.create(rootPath + \"/\" + path, data.getBytes(UTF_8), ZooDefs.Ids.OPEN_ACL_UNSAFE,\n+ CreateMode.PERSISTENT);\n+ } catch (KeeperException | InterruptedException e) {\n+ e.printStackTrace();\n+ }\n+ }\n+ }\n+\n+ private void setWatchForAllNodes(ZooKeeper zk, SimpleWatcher simpleWatcher) {\n+ for (int i = 0; i < znodeCount; i++) {\n+ try {\n+ if (watchMode.equals(WatchMode.TRADITION.getAbbreviation())) {\n+ zk.exists(rootPath + \"/\" + i, simpleWatcher);\n+ } else {\n+ zk.addWatch(rootPath + \"/\" + i, simpleWatcher, PERSISTENT);\n+ }\n+ } catch (KeeperException | InterruptedException e) {\n+ e.printStackTrace();\n+ }\n+ }\n+ }\n+\n+ private void deleteNode(ZooKeeper zk) {\n+ watchTriggerTimeMap.clear();\n+ for (int i = 0; (i * clientThreads + threadIndex) < znodeCount; i++) {\n+ int path = (i * clientThreads + threadIndex);\n+ watchTriggerTimeMap.put(path, System.currentTimeMillis());\n+ try {\n+ zk.delete(rootPath + \"/\" + path, -1);\n+ } catch (KeeperException | InterruptedException e) {\n+ e.printStackTrace();\n+ }\n+ }\n+ }\n+\n+ private void setNode(ZooKeeper zk) {\n+ for (int i = 0; i < watchMultiple - 1; i++) {\n+ watchTriggerTimeMap.clear();\n+ setNodeOnce(zk);\n+ }\n+ }\n+\n+ private void setNodeOnce(ZooKeeper zk) {\n+ for (int i = 0; (i * clientThreads + threadIndex) < znodeCount; i++) {\n+ int path = (i * clientThreads + threadIndex);\n+ watchTriggerTimeMap.put(path, System.currentTimeMillis());\n+ try {\n+ String data = RandomStringUtils.randomAlphanumeric(znodeSize);\n+ zk.setData(rootPath + \"/\" + path, data.getBytes(), -1);\n+ } catch (KeeperException | InterruptedException e) {\n+ e.printStackTrace();\n+ }\n+ }\n+ }\n+ }\n+\n+ private static class SimpleWatcher implements Watcher {\n+ private CountDownLatch finishWatchCountDownLatch;\n+\n+ public SimpleWatcher(CountDownLatch finishWatchCountDownLatch) {\n+ this.finishWatchCountDownLatch = finishWatchCountDownLatch;\n+ }\n+\n+ public void process(WatchedEvent e) {\n+ try {\n+ if (e.getType() == Event.EventType.None) {\n+ return;\n+ }\n+ if (e.getState() == Event.KeeperState.SyncConnected) {\n+ String pathIndex = e.getPath().substring(e.getPath().lastIndexOf(\"/\") + 1);\n+ Long startTriggerTime = watchTriggerTimeMap.get(Integer.parseInt(pathIndex));\n+ if (startTriggerTime != null) {\n+ latencyList.add(System.currentTimeMillis() - startTriggerTime);\n+ } else {\n+ latencyList.add(-1L);\n+ }\n+ finishWatchCountDownLatch.countDown();\n+ if (isDebug) {\n+ LOG.info(\"finishWatchCountDownLatch.getCount(): {}, pathIndex: {}\", finishWatchCountDownLatch.getCount()\n+ , pathIndex);\n+ }\n+ }\n+ } catch (Exception ex) {\n+ LOG.warn(\"SimpleWatcher process watch path:{}, exception\", e.getPath(), ex);\n+ }\n+ }\n+ }\n+\n+ enum WatchMode {\n+ // the traditional one-off watch\n+ TRADITION(\"traditional_watch\", \"t\"),\n+ PERSISTENT(\"persistent_watch\", \"p\");\n+ private String name;\n+ private String abbreviation;\n\nReview Comment:\n *[ImmutableEnumChecker](https://errorprone.info/bugpattern/ImmutableEnumChecker):* enums should be immutable: 'WatchMode' has non-final field 'abbreviation'\n \n ---\n \n \n ```suggestion\n private final String abbreviation;\n ```\n \n \n \n ---\n \n

ℹ️ Learn about @sonatype-lift commands\n \n You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.\n | **Command** | **Usage** |\n | -----------;02/Sep/22 12:13;githubbot;600", "Log Work__3": "sonatype-lift[bot] commented on code in PR #1406:\nURL: https://github.com/apache/zookeeper/pull/1406#discussion_r961613597\n\n\n##########\nbin/zkWatchBenchmark.sh:\n##########\n@@ -0,0 +1,38 @@\n+#!/usr/bin/env bash\n+\n+# Licensed to the Apache Software Foundation (ASF) under one or more\n+# contributor license agreements. See the NOTICE file distributed with\n+# this work for additional information regarding copyright ownership.\n+# The ASF licenses this file to You under the Apache License, Version 2.0\n+# (the \"License\"); you may not use this file except in compliance with\n+# the License. You may obtain a copy of the License at\n+#\n+# http://www.apache.org/licenses/LICENSE-2.0\n+#\n+# Unless required by applicable law or agreed to in writing, software\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+# See the License for the specific language governing permissions and\n+# limitations under the License.\n+\n+#\n+# If this scripted is run out of /usr/bin or some other system bin directory\n+# it should be linked to and not copied. Things like java jar files are found\n+# relative to the canonical path of this script.\n+#\n+\n+# use POSIX interface, symlink is followed automatically\n+ZOOBIN=\"${BASH_SOURCE-$0}\"\n+ZOOBIN=\"$(dirname \"${ZOOBIN}\")\"\n+ZOOBINDIR=\"$(cd \"${ZOOBIN}\"; pwd)\"\n+\n+if [ -e \"$ZOOBIN/../libexec/zkEnv.sh\" ]; then\n+ . \"$ZOOBINDIR\"/../libexec/zkEnv.sh\n+else\n+ . \"$ZOOBINDIR\"/zkEnv.sh\n\nReview Comment:\n *[SC1091](https://github.com/koalaman/shellcheck/wiki/SC1091):* Not following: ./zkEnv.sh was not specified as input (see shellcheck -x).\n \n ---\n \n
ℹ️ Learn about @sonatype-lift commands\n \n You can reply with the following commands. For example, reply with ***@sonatype-lift ignoreall*** to leave out all findings.\n | **Command** | **Usage** |\n | -----------;02/Sep/22 12:13;githubbot;600", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 2400, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 2400, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-3264", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Sun Jul 05 03:46:03 UTC 2020", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0ekzc:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "05/Jul/20 03:46;maoling;Tested in Windows OS:\n{code:java}\nC:\\Users\\maoling\\apache-zookeeper-3.7.0-SNAPSHOT-bin\\bin>zkWatchBenchmark.cmd -root_path /test -threads 50 znode_count 30000 -znode_size 1000 -force -connect_string 127.0.0.1:2181 -timeout 300000\n\n\nNotification expected count: 1500000, received count: 1500000 (1.0), loss count: 0 (0.0)\nLatency distribution:\nAvg latency: 119.2061 ms/op\nFastest latency: 3.0 ms/op\nSlowest latency: 328.0 ms/op\n10th percentile notification latency: 109 ms\n25th percentile notification latency: 109 ms\n50th percentile notification latency: 116 ms\n75th percentile notification latency: 125 ms\n90th percentile notification latency: 133 ms\n95th percentile notification latency: 141 ms\n99th percentile notification latency: 173 ms\nTotal time:252326 ms, watch benchmark total time: 72319 ms, throughput:20741.4372 op/s\n{code};;;", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "fix the build warnings about @see,@link,@return found by IDEA", "Issue key": "ZOOKEEPER-3789", "Issue id": 13297249, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "09/Apr/20 02:36", "Updated": "17/Mar/23 12:41", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "server", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 1, "Labels": "pull-request-available", "Labels__1": "", "Description": "1. I use my IDEA to find these maven build warnings:\n{code:java}\n/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java -Dmaven.multiModuleProjectDirectory=/Users/maoling/workspaces/workspace_zookeeper/zookeeper \"-Dmaven.home=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3\" \"-Dclassworlds.conf=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/bin/m2.conf\" \"-Dmaven.ext.class.path=/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven-event-listener.jar\" \"-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=58545:/Applications/IntelliJ IDEA.app/Contents/bin\" -Dfile.encoding=UTF-8 -classpath \"/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/boot/plexus-classworlds-2.6.0.jar\" org.codehaus.classworlds.Launcher -Didea.version2019.3.1 -DskipTests=true package -P !java-build\n{code}\n{code:java}\nJavadoc Warnings\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:340: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getEphemerals(EphemeralsCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:340: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getEphemerals(String, EphemeralsCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:271: ?? - ??@link: ?org.apache.zookeeper.ZooKeeper????sync(String, VoidCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:150: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getACL(String, Stat, ACLCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:89: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getAllChildrenNumber(String, AllChildrenNumberCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:202: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getChildren(String, boolean, Children2Callback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:202: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getChildren(String, Watcher, Children2Callback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:179: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getChildren(String, boolean, ChildrenCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:179: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getChildren(String, Watcher, ChildrenCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:227: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????create(String, byte[], List, CreateMode, Create2Callback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:227: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????create(String, byte[], List, CreateMode, Create2Callback, Object, long)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:121: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getData(String, boolean, DataCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:121: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getData(String, Watcher, DataCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:121: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getConfig(boolean, DataCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:121: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????getConfig(Watcher, DataCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:328: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????multi(Iterable, MultiCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:70: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????exists(String, boolean, StatCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:70: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????exists(String, Watcher, StatCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:70: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????setData(String, byte[], int, StatCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:70: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????setACL(String, List, int, StatCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:262: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????create(String, byte[], List, CreateMode, StringCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:299: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????delete(String, int, VoidCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:299: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????removeAllWatches(String, Watcher.WatcherType, boolean, VoidCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:299: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????removeWatches(String, Watcher, Watcher.WatcherType, boolean, VoidCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:299: ?? - ??@see: ?org.apache.zookeeper.ZooKeeper????sync(String, VoidCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java:299: ?? - ??@link: ?org.apache.zookeeper.ZooKeeper????delete(String, int, VoidCallback, Object)\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/ZKDatabase.java:513: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/util/CircularBuffer.java:70: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnLog.java:318: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/FileTxnSnapLog.java:571: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/SnapStream.java:215: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/Util.java:264: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/persistence/Util.java:274: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Learner.java:94: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java:1201: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerMaster.java:131: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java:265: ?? - @param argument \"qv,\" ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java:977: ?? - @param argument \"zxid,\" ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/Leader.java:977: ?? - @param argument \"sid,\" ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/LearnerHandler.java:1142: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/QuorumPeer.java:1949: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java:37: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CliCommand.java:77: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CliCommand.java:85: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CliCommand.java:93: ?? - @return ???????\n/Users/maoling/workspaces//zookeeper/zookeeper-server/src/main/java/org/apache/zookeeper/cli/CliCommand.java:118: ?? - @return ???????\n{code}", "Environment": "", "Log Work": "maoling commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317\n \n \n - more details in the [ZOOKEEPER-3789](https://issues.apache.org/jira/browse/ZOOKEEPER-3789)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Apr/20 03:55;githubbot;600", "Log Work__1": "ctubbsii commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r407017082\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java\n ##########\n @@ -62,10 +62,10 @@\n * @param ctx Whatever context object that we passed to asynchronous calls.\n * @param stat {@link Stat} object of the node on given path.\n *\n- * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n- * @see ZooKeeper#exists(String, Watcher, StatCallback, Object)\n- * @see ZooKeeper#setData(String, byte[], int, StatCallback, Object)\n- * @see ZooKeeper#setACL(String, List, int, StatCallback, Object)\n+ * @see ZooKeeper#exists(String, boolean, org.apache.zookeeper.AsyncCallback.StatCallback, Object)\n \n Review comment:\n I think it would be better to add an import statement for these. It makes it more readable.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Apr/20 04:50;githubbot;600", "Log Work__2": "ctubbsii commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r407017397\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/jmx/ManagedUtil.java\n ##########\n @@ -53,7 +53,7 @@ private static boolean isLog4jJmxEnabled() {\n /**\n * Register the log4j JMX mbeans. Set system property\n * \"zookeeper.jmx.log4j.disable\" to true to disable registration.\n- * @see http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/jmx/package-summary.html\n+ * @see \n \n Review comment:\n I don't think this will work. This will create a link around an empty region. I was pretty sure a raw URL was fine for the value for `@see`, but if you want to create an explicit link, you need to have something in between `` and ``\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Apr/20 04:50;githubbot;600", "Log Work__3": "ctubbsii commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r407017248\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n ##########\n @@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n \n Review comment:\n These are good, but the `@param aclString` is also not doing anything.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Apr/20 04:50;githubbot;600", "Log Work__4": "maoling commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410809553\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java\n ##########\n @@ -62,10 +62,10 @@\n * @param ctx Whatever context object that we passed to asynchronous calls.\n * @param stat {@link Stat} object of the node on given path.\n *\n- * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n- * @see ZooKeeper#exists(String, Watcher, StatCallback, Object)\n- * @see ZooKeeper#setData(String, byte[], int, StatCallback, Object)\n- * @see ZooKeeper#setACL(String, List, int, StatCallback, Object)\n+ * @see ZooKeeper#exists(String, boolean, org.apache.zookeeper.AsyncCallback.StatCallback, Object)\n \n Review comment:\n please tell me what the concrete thing I should do here? :)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 04:10;githubbot;600", "Log Work__5": "maoling commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410810607\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n ##########\n @@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n \n Review comment:\n - My IDEA doesn't complain about this although the `@param` is really useless\n - It's time to do more strict constraint in the `checkstyle-strict.xml `about javaDoc? Are you interested in working for this? \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 04:18;githubbot;600", "Log Work__6": "maoling commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410814292\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/jmx/ManagedUtil.java\n ##########\n @@ -53,7 +53,7 @@ private static boolean isLog4jJmxEnabled() {\n /**\n * Register the log4j JMX mbeans. Set system property\n * \"zookeeper.jmx.log4j.disable\" to true to disable registration.\n- * @see http://logging.apache.org/log4j/1.2/apidocs/index.html?org/apache/log4j/jmx/package-summary.html\n+ * @see \n \n Review comment:\n A raw URL still has build warning and I had fixed the empty region.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 04:45;githubbot;600", "Log Work__7": "maoling commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410810607\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n ##########\n @@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n \n Review comment:\n - My IDEA doesn't complain about this although the `@param` is really useless\n - It's time to do more strict constraint in the `checkstyle-strict.xml `about javaDoc? Are you interested in working for this? @ctubbsii \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 04:46;githubbot;600", "Log Work__8": "maoling commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410815694\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n ##########\n @@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n \n Review comment:\n BTW, @ctubbsii Is your github avatar from the [Death Note](https://cn.bing.com/search?q=Death+Note&qs=n&FORM=BESBTB&sp=-1&pq=&sc=0-0&sk=&cvid=A5D97DC314B841378526D876581B4A2E&ensearch=1) ?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 04:56;githubbot;600", "Log Work__9": "TisonKun commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410851473\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n ##########\n @@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n \n Review comment:\n > BTW, @ctubbsii Is your github avatar from the [Death Note](https://cn.bing.com/search?q=Death+Note&qs=n&FORM=BESBTB&sp=-1&pq=&sc=0-0&sk=&cvid=A5D97DC314B841378526D876581B4A2E&ensearch=1) ?\n \n I think it is \"L\" lol\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 08:33;githubbot;600", "Log Work__10": "ctubbsii commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410932881\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java\n ##########\n @@ -62,10 +62,10 @@\n * @param ctx Whatever context object that we passed to asynchronous calls.\n * @param stat {@link Stat} object of the node on given path.\n *\n- * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n- * @see ZooKeeper#exists(String, Watcher, StatCallback, Object)\n- * @see ZooKeeper#setData(String, byte[], int, StatCallback, Object)\n- * @see ZooKeeper#setACL(String, List, int, StatCallback, Object)\n+ * @see ZooKeeper#exists(String, boolean, org.apache.zookeeper.AsyncCallback.StatCallback, Object)\n \n Review comment:\n ```java\n import org.apache.zookeeper.AsyncCallback.StatCallback;\n ```\n \n ```suggestion\n * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n ```\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 15:46;githubbot;600", "Log Work__11": "ctubbsii commented on pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r410933508\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n ##########\n @@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n \n Review comment:\n > * My IDEA doesn't complain about this although the `@param` is really useless\n \n Mine is Eclipse. It doesn't complain by default, but it can find them if you tune the settings. I'm not sure, but Javadoc's built-in `doclint` may also be able to find them.\n \n > BTW, @ctubbsii Is your github avatar from the [Death Note](https://cn.bing.com/search?q=Death+Note&qs=n&FORM=BESBTB&sp=-1&pq=&sc=0-0&sk=&cvid=A5D97DC314B841378526D876581B4A2E&ensearch=1) ?\n \n Of course. :smiley_cat:\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;19/Apr/20 15:49;githubbot;600", "Log Work__12": "maoling commented on a change in pull request #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r411367926\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java\n##########\n@@ -62,10 +62,10 @@\n * @param ctx Whatever context object that we passed to asynchronous calls.\n * @param stat {@link Stat} object of the node on given path.\n *\n- * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n- * @see ZooKeeper#exists(String, Watcher, StatCallback, Object)\n- * @see ZooKeeper#setData(String, byte[], int, StatCallback, Object)\n- * @see ZooKeeper#setACL(String, List, int, StatCallback, Object)\n+ * @see ZooKeeper#exists(String, boolean, org.apache.zookeeper.AsyncCallback.StatCallback, Object)\n\nReview comment:\n - use this way, the checkstyle will view it as useless import?\n - I choose this way because I found some examples from the existing codes e:g Op.java#Line44\n `* @see ZooKeeper#create(String, byte[], ], java.util.List, Cr, CreateMode, e, org.apache.zookeeper.AsyncCallback.StringCallbaclback, Object)`\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;20/Apr/20 13:16;githubbot;600", "Log Work__13": "maoling commented on a change in pull request #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r411372897\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n##########\n@@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n\nReview comment:\n - Actually, `mvn clean package -DskipTests` can also find the same build warnings, not IDEA. I don't know the mechanism.\n - Although this patch has clean up these warnings, if we have no strict constraint on javaDoc. After some time, some codes which have nonstandard javaDocs will be merged again?\n - @ctubbsii @TisonKun Any of you have a free time to do this? :) \n Top priority for javaDoc is: 1.don't allow empty `@param` and empty `@return`; 2. @see and @link must meet specifications.\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;20/Apr/20 13:23;githubbot;600", "Log Work__14": "ctubbsii commented on a change in pull request #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r411543375\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java\n##########\n@@ -62,10 +62,10 @@\n * @param ctx Whatever context object that we passed to asynchronous calls.\n * @param stat {@link Stat} object of the node on given path.\n *\n- * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n- * @see ZooKeeper#exists(String, Watcher, StatCallback, Object)\n- * @see ZooKeeper#setData(String, byte[], int, StatCallback, Object)\n- * @see ZooKeeper#setACL(String, List, int, StatCallback, Object)\n+ * @see ZooKeeper#exists(String, boolean, org.apache.zookeeper.AsyncCallback.StatCallback, Object)\n\nReview comment:\n > * use this way, the checkstyle will view it as useless import?\n \n Then checkstyle is mistaken. Perhaps it needs to be updated to a newer version? Or perhaps the rules are configured wrong? Or perhaps checkstyle is being run too soon (it should be run after the code is compiled)?\n \n > * I choose this way because I found some examples from the existing codes e:g Op.java#Line44\n > `* @see ZooKeeper#create(String, byte[], ], java.util.List, Cr, CreateMode, e, org.apache.zookeeper.AsyncCallback.StringCallbaclback, Object)`\n \n That's fine. It was only a suggestion.\n \n If it doesn't work out, then please disregard.\n \n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;20/Apr/20 17:04;githubbot;600", "Log Work__15": "TisonKun commented on a change in pull request #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r411792369\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n##########\n@@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n\nReview comment:\n @maoling I'll check if checkstyle rules support guarding what you proposed.\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;21/Apr/20 00:59;githubbot;600", "Log Work__16": "TisonKun commented on a change in pull request #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r412884350\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/AsyncCallback.java\n##########\n@@ -62,10 +62,10 @@\n * @param ctx Whatever context object that we passed to asynchronous calls.\n * @param stat {@link Stat} object of the node on given path.\n *\n- * @see ZooKeeper#exists(String, boolean, StatCallback, Object)\n- * @see ZooKeeper#exists(String, Watcher, StatCallback, Object)\n- * @see ZooKeeper#setData(String, byte[], int, StatCallback, Object)\n- * @see ZooKeeper#setACL(String, List, int, StatCallback, Object)\n+ * @see ZooKeeper#exists(String, boolean, org.apache.zookeeper.AsyncCallback.StatCallback, Object)\n\nReview comment:\n > * use this way, the checkstyle will view it as useless import?\n \n No. Checkstyle should be happy with it.\n \n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;22/Apr/20 11:02;githubbot;600", "Log Work__17": "TisonKun commented on a change in pull request #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#discussion_r413813872\n\n\n\n##########\nFile path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AclParser.java\n##########\n@@ -32,7 +32,6 @@\n /**\n * parse string into list of ACL\n * @param aclString\n- * @return\n\nReview comment:\n @maoling it seems https://checkstyle.sourceforge.io/config_javadoc.html#NonEmptyAtclauseDescription works. Will open a ticket for investigating integrating it.\n\n\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;23/Apr/20 13:58;githubbot;600", "Log Work__18": "tisonkun commented on PR #1317:\nURL: https://github.com/apache/zookeeper/pull/1317#issuecomment-1473772295\n\n Closing...\n \n Long stale and code conflict. It needs another round.\n\n\n;17/Mar/23 12:41;githubbot;600", "Log Work__19": "tisonkun closed pull request #1317: ZOOKEEPER-3789: fix the build warnings about @see,@link,@return found by IDEA\nURL: https://github.com/apache/zookeeper/pull/1317\n\n\n;17/Mar/23 12:41;githubbot;600", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 12000, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 12000, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-3767", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Apr 09 03:59:16 UTC 2020", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0dftc:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "09/Apr/20 03:59;ctubbsii;Cool! I'm not the only one who noticed this. :) Fixing all the javadoc warnings (and eventually, all non-javadoc compiler warnings, too) is something I have on my personal TODO list to fix soon. But, I'd be happy if somebody else got to it first. :);;;", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Apply modernizer-maven-plugin to build", "Issue key": "ZOOKEEPER-3787", "Issue id": 13296971, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "ctubbsii", "Reporter": "ctubbsii", "Creator": "ctubbsii", "Created": "08/Apr/20 03:13", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "build", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 1, "Labels": "", "Labels__1": "", "Description": "modernizer-maven-plugin can catch outdated Java coding paradigms that have been superseded by newer Java language features.\n\nApplying the recommended changes from this plugin can help a project avoid breakages, incompatibilities, and changes in behavior, across Java versions. It can also help reduce dependencies by suggesting changes that leverage built-in Java classes rather than commonly-used external libraries that were written to add convenient features before those features were added to Java itself.\n\nAdding the plugin to the build is simple, but working through all the items it catches is tedious. I've already begun this work.", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Apr 09 02:49:02 UTC 2020", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0de3k:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "08/Apr/20 08:44;andor;Nice addition [~ctubbsii].\n\nCan we setup this plugin to generate warning messages only, so we could collaborate on the items?;;;", "Comment__1": "09/Apr/20 02:49;ctubbsii;[~andor] Adding the plugin to the build is trivial. The only real effort is addressing the specific things it finds. I'm actually already done with the modernizer-maven-plugin stuff... but it depends on a series of related PRs that I have queued to improve the build and make it easier to build the project (which makes it easier to contribute).\n\nCurrently, I'm waiting on the next PR of mine to be merged (for ZOOKEEPER-3786), then I have one for ZOOKEEPER-3788, then another to fix the full-build and fatjar profiles and some Maven issues with the zookeeper-it module.\n\nOnly after those can I submit the PR for this issue before working on some other tasks I have queued.\n\nI could submit everything I have ready in one PR, but that would be a nightmare to review. I can't submit them as independent PRs, because that would be a nightmare to resolve the merge conflicts. So, I'm submitting them in sequence, trying to go for incremental improvements. But, it takes time to get PRs reviewed and then merged, so I have to be patient. :);;;", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Wrong message in IOException", "Issue key": "ZOOKEEPER-3775", "Issue id": 13295073, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Trivial", "Resolution": "", "Assignee": "shireennagdive", "Reporter": "lasaro", "Creator": "lasaro", "Created": "30/Mar/20 19:33", "Updated": "09/Apr/20 07:57", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "leaderElection", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "method run of QuorumCnxManager throws the following exception:\n\nif (length <= 0 || length > PACKETMAXSIZE) {\n     throw new IOException(\"Received packet with invalid packet: \" + length);\n }\n\nInstead of the current string, the cause should be \"Received packet with invalid length: ", "Environment": "", "Log Work": "shireennagdive commented on issue #1307: ZOOKEEPER-3775: Wrong message in IOException\nURL: https://github.com/apache/zookeeper/pull/1307#issuecomment-610522466\n \n \n @maoling I have changed the title!\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;07/Apr/20 17:34;githubbot;600", "Log Work__1": "eolivelli commented on issue #1307: ZOOKEEPER-3775: Wrong message in IOException\nURL: https://github.com/apache/zookeeper/pull/1307#issuecomment-611147889\n \n \n retest this please\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;08/Apr/20 19:28;githubbot;600", "Log Work__2": "shireennagdive commented on issue #1307: ZOOKEEPER-3775: Wrong message in IOException\nURL: https://github.com/apache/zookeeper/pull/1307#issuecomment-611221896\n \n \n @eolivelli If you think this is a very small PR, then I can make this change as a part of another issue in JIRA. Feel free to close this.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;08/Apr/20 22:14;githubbot;600", "Log Work__3": "eolivelli commented on issue #1307: ZOOKEEPER-3775: Wrong message in IOException\nURL: https://github.com/apache/zookeeper/pull/1307#issuecomment-611388168\n \n \n @shireennagdive \n yes it would be better\n thank you\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;09/Apr/20 07:57;githubbot;600", "Log Work__4": "eolivelli commented on pull request #1307: ZOOKEEPER-3775: Wrong message in IOException\nURL: https://github.com/apache/zookeeper/pull/1307\n \n \n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;09/Apr/20 07:57;githubbot;600", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 3000, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 3000, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Wed Apr 08 21:27:50 UTC 2020", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0d368:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "05/Apr/20 03:48;shireennagdive;I would like to work on this. Please assign this to me [~lasaro];;;", "Comment__1": "05/Apr/20 22:00;lasaro;Hi Shireen. I do not have the credentials needed to assign the JIRA. But given that it is a fairly simple issue, I would recommend that you create a PR and post it here and someone else will do it.\n\nCheers.;;;", "Comment__2": "06/Apr/20 00:38;shireennagdive;[https://github.com/apache/zookeeper/pull/1307];;;", "Comment__3": "08/Apr/20 18:04;shireennagdive;Hi [~lasaro], Is there something I need to do to schedule a Jenkins build for checking of all tests? I see that there are commits later than me having their Jenkins build done. Or is it something which is random and I should just wait for it? Thanks!;;;", "Comment__4": "08/Apr/20 19:06;lasaro;Hi Shireen. I am not well versed in the processes followed by this project.\n\n[~phunt], as an active member, could you chip in here? Maybe assign the bug and trigger the build?\n\nCheers;;;", "Comment__5": "08/Apr/20 19:18;phunt;[~lasaro] I added you to the contributor role - you should have increased privs in jira now. Also assigned this to you. Welcome aboard!\n\nI'm not sure why the build didn't trigger - [~eolivelli] do you know?;;;", "Comment__6": "08/Apr/20 21:17;lasaro;Thank you, [~phunt]. But [~shireennagdive] has already provided the PR and is probably going to be more active in the project than me. Could you add her as a contributor as well so I can reassign to her?\n\nRegards;;;", "Comment__7": "08/Apr/20 21:27;phunt;Done. Enjoy!;;;", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "improve the output of the hidden password in digest mode and fix the hardcode of ACL Scheme", "Issue key": "ZOOKEEPER-3768", "Issue id": 13293140, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "22/Mar/20 04:56", "Updated": "28/Mar/20 09:55", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "security", "Component/s__1": "server", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling commented on pull request #1297: ZOOKEEPER-3768:improve the output of the hidden password in digest mode and fix the hardcode of ACL Scheme\nURL: https://github.com/apache/zookeeper/pull/1297\n \n \n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;28/Mar/20 09:55;githubbot;600", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 600, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 600, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2020-03-22 04:56:24.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0crwo:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Update jUnit to 5.6", "Issue key": "ZOOKEEPER-3732", "Issue id": 13286021, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "tamaas", "Reporter": "tamaas", "Creator": "tamaas", "Created": "18/Feb/20 15:41", "Updated": "23/Sep/20 21:01", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.6.0", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "junit5", "Labels__1": "", "Description": "jUnit 4 is limited to Java 7 features, jUnit 5 can use new elements of JDK8.\n\nIt's time to go forward and update our jUnit version to 5.6.", "Environment": "", "Log Work": "tamaashu commented on pull request #1265: ZOOKEEPER-3732: Update jUnit to 5.6 - WIP - please don't commit yet\nURL: https://github.com/apache/zookeeper/pull/1265\n \n \n Update jUnit version to 5.6, convert testing of minor projects, without touching zookeeper-server.\n \n Change-Id: Ib48f573af6e62174b52008e931f0b1b42155aa6f\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;24/Feb/20 15:27;githubbot;600", "Log Work__1": "tamaashu closed pull request #1265:\nURL: https://github.com/apache/zookeeper/pull/1265\n\n\n \n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;05/Jun/20 17:35;githubbot;600", "Log Work__2": "tamaashu commented on pull request #1265:\nURL: https://github.com/apache/zookeeper/pull/1265#issuecomment-639656073\n\n\n I abandon this change to do update jUnit in a more incremental way instead of a big-bang release. Please check the Jira ticket.\n\n\n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n\nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;05/Jun/20 17:35;githubbot;600", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 1800, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 64800, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "CURATOR-582", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2020-02-18 15:41:34.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z0bmb4:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Testing and documenting secure and unsecure ZK client connection from the same JVM", "Issue key": "ZOOKEEPER-3643", "Issue id": 13273565, "Parent id": "", "Issue Type": "Test", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "symat", "Reporter": "symat", "Creator": "symat", "Created": "10/Dec/19 09:25", "Updated": "16/Jan/20 15:01", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "We are working in the ZooKeeper SSL integration in HBase. By default, one can enable ZooKeeper SSL client connections using Java System Properties. However, there are certain use-cases, when we need to connect to two ZooKeeper quorum from the same JVM (e.g. when connecting to two HBase clusters for data synchronization). It is possible, that one of the ZooKeeper quorum use SSL while the other doesn't.\n\nIn this case it is not possible to use Java System Properties, as those will be affecting both ZooKeeper client connections. These use-cases require code modifications e.g. in HBase to use custom ZooKeeper client configurations. We need to add unit test in ZooKeeper to verify that it works and also make sense to document this use-case to help other open source projects to start using ZooKeeper SSL.", "Environment": "", "Log Work": "symat commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170\n \n \n We are working in the ZooKeeper SSL integration in HBase. By default, one can enable ZooKeeper SSL client connections using Java System Properties. However, there are certain use-cases, when we need to connect to two ZooKeeper quorum from the same JVM (e.g. when connecting to two HBase clusters for data synchronization). It is possible, that one of the ZooKeeper quorum use SSL while the other doesn't.\n \n In this case it is not possible to use Java System Properties, as those will be affecting both ZooKeeper client connections. These use-cases require code modifications e.g. in HBase to use custom ZooKeeper client configurations. We need to add unit test in ZooKeeper to verify that it works and also make sense to document this use-case to help other open source projects to start using ZooKeeper SSL.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;10/Dec/19 12:18;githubbot;600", "Log Work__1": "eolivelli commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#discussion_r356120687\n \n \n\n ##########\n File path: zookeeper-server/src/test/java/org/apache/zookeeper/test/ClientSSLTest.java\n ##########\n @@ -138,6 +118,55 @@ public void testClientServerSSL(boolean useSecurePort) throws Exception {\n }\n }\n \n+ /**\n+ * This test covers the case when from the same JVM we connect to both secure and unsecure\n+ * clusters. In this case we can't use the Java System Properties, but we need to specify client\n+ * configuration.\n+ *\n+ * In this test the servers has two client ports open, one used only for secure connection and one\n+ * used only for unsecure connections. (the client port unification is disabled)\n+ */\n+ @Test\n+ public void testClientCanConnectBothSecureAndUnsecure() throws Exception {\n+\n+ // to make sure the test is testing the case we want, we disable client port unification in the\n+ // server, and also disable the property which would instruct the client to connect using SSL\n+ System.clearProperty(NettyServerCnxnFactory.PORT_UNIFICATION_KEY);\n+ System.clearProperty(ZKClientConfig.SECURE_CLIENT);\n+\n+ final int SERVER_COUNT = 3;\n+ final int[] clientPorts = new int[SERVER_COUNT];\n+ int[] secureClientPorts = new int[SERVER_COUNT];\n+\n+ MainThread[] mt = startThreeNodeSSLCluster(clientPorts, secureClientPorts);\n+\n+ // Servers have been set up. Now go test if both secure and unsecure connection is successful.\n+ for (int i = 0; i < SERVER_COUNT; i++) {\n+\n+ // testing the secure connection, also do some simple operation to verify that it works\n+ ZKClientConfig secureClientConfig = new ZKClientConfig();\n+ secureClientConfig.setProperty(ZKClientConfig.SECURE_CLIENT, \"true\");\n+ ZooKeeper zkSecure = ClientBase.createZKClient(\"127.0.0.1:\" + secureClientPorts[i], TIMEOUT, secureClientConfig);\n+ zkSecure.create(\"/test\", \"\".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);\n \n Review comment:\n Is there a way to check that we are using a secure connection?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;10/Dec/19 15:55;githubbot;600", "Log Work__2": "symat commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#discussion_r356567078\n \n \n\n ##########\n File path: zookeeper-server/src/test/java/org/apache/zookeeper/test/ClientSSLTest.java\n ##########\n @@ -138,6 +118,55 @@ public void testClientServerSSL(boolean useSecurePort) throws Exception {\n }\n }\n \n+ /**\n+ * This test covers the case when from the same JVM we connect to both secure and unsecure\n+ * clusters. In this case we can't use the Java System Properties, but we need to specify client\n+ * configuration.\n+ *\n+ * In this test the servers has two client ports open, one used only for secure connection and one\n+ * used only for unsecure connections. (the client port unification is disabled)\n+ */\n+ @Test\n+ public void testClientCanConnectBothSecureAndUnsecure() throws Exception {\n+\n+ // to make sure the test is testing the case we want, we disable client port unification in the\n+ // server, and also disable the property which would instruct the client to connect using SSL\n+ System.clearProperty(NettyServerCnxnFactory.PORT_UNIFICATION_KEY);\n+ System.clearProperty(ZKClientConfig.SECURE_CLIENT);\n+\n+ final int SERVER_COUNT = 3;\n+ final int[] clientPorts = new int[SERVER_COUNT];\n+ int[] secureClientPorts = new int[SERVER_COUNT];\n+\n+ MainThread[] mt = startThreeNodeSSLCluster(clientPorts, secureClientPorts);\n+\n+ // Servers have been set up. Now go test if both secure and unsecure connection is successful.\n+ for (int i = 0; i < SERVER_COUNT; i++) {\n+\n+ // testing the secure connection, also do some simple operation to verify that it works\n+ ZKClientConfig secureClientConfig = new ZKClientConfig();\n+ secureClientConfig.setProperty(ZKClientConfig.SECURE_CLIENT, \"true\");\n+ ZooKeeper zkSecure = ClientBase.createZKClient(\"127.0.0.1:\" + secureClientPorts[i], TIMEOUT, secureClientConfig);\n+ zkSecure.create(\"/test\", \"\".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);\n \n Review comment:\n Thanks, it's a great question!\n \n To initiate SSL connection (instead of a non-secure one) is a decision taken in the actual Client Socket implementation. (When we are creating a new ZooKeeper client session, it is not enough to request to have SSL connection in the client config, but we also have to use Netty instead of NIO, otherwise we will not have an SSL connection)\n \n For the tests it would be possible extract this information by extending the `ZooKeeperTestable` class, but I think it is actually an information that can be important even for the users of the Java Client API. So I propose a new method on the `ZooKeeper` class. See my implementation in the next commit.\n \n What do you think?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Dec/19 12:22;githubbot;600", "Log Work__3": "symat commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#discussion_r356569639\n \n \n\n ##########\n File path: zookeeper-server/src/test/java/org/apache/zookeeper/test/ClientSSLTest.java\n ##########\n @@ -138,6 +118,55 @@ public void testClientServerSSL(boolean useSecurePort) throws Exception {\n }\n }\n \n+ /**\n+ * This test covers the case when from the same JVM we connect to both secure and unsecure\n+ * clusters. In this case we can't use the Java System Properties, but we need to specify client\n+ * configuration.\n+ *\n+ * In this test the servers has two client ports open, one used only for secure connection and one\n+ * used only for unsecure connections. (the client port unification is disabled)\n+ */\n+ @Test\n+ public void testClientCanConnectBothSecureAndUnsecure() throws Exception {\n+\n+ // to make sure the test is testing the case we want, we disable client port unification in the\n+ // server, and also disable the property which would instruct the client to connect using SSL\n+ System.clearProperty(NettyServerCnxnFactory.PORT_UNIFICATION_KEY);\n+ System.clearProperty(ZKClientConfig.SECURE_CLIENT);\n+\n+ final int SERVER_COUNT = 3;\n+ final int[] clientPorts = new int[SERVER_COUNT];\n+ int[] secureClientPorts = new int[SERVER_COUNT];\n+\n+ MainThread[] mt = startThreeNodeSSLCluster(clientPorts, secureClientPorts);\n+\n+ // Servers have been set up. Now go test if both secure and unsecure connection is successful.\n+ for (int i = 0; i < SERVER_COUNT; i++) {\n+\n+ // testing the secure connection, also do some simple operation to verify that it works\n+ ZKClientConfig secureClientConfig = new ZKClientConfig();\n+ secureClientConfig.setProperty(ZKClientConfig.SECURE_CLIENT, \"true\");\n+ ZooKeeper zkSecure = ClientBase.createZKClient(\"127.0.0.1:\" + secureClientPorts[i], TIMEOUT, secureClientConfig);\n+ zkSecure.create(\"/test\", \"\".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);\n \n Review comment:\n I marked the new method in the Javadoc with the `@since 3.6` tag. Do you think it is OK? Or we should be more specific like 3.6.0?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Dec/19 12:29;githubbot;600", "Log Work__4": "symat commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#discussion_r356582122\n \n \n\n ##########\n File path: zookeeper-server/src/test/java/org/apache/zookeeper/test/ClientSSLTest.java\n ##########\n @@ -138,6 +118,55 @@ public void testClientServerSSL(boolean useSecurePort) throws Exception {\n }\n }\n \n+ /**\n+ * This test covers the case when from the same JVM we connect to both secure and unsecure\n+ * clusters. In this case we can't use the Java System Properties, but we need to specify client\n+ * configuration.\n+ *\n+ * In this test the servers has two client ports open, one used only for secure connection and one\n+ * used only for unsecure connections. (the client port unification is disabled)\n+ */\n+ @Test\n+ public void testClientCanConnectBothSecureAndUnsecure() throws Exception {\n+\n+ // to make sure the test is testing the case we want, we disable client port unification in the\n+ // server, and also disable the property which would instruct the client to connect using SSL\n+ System.clearProperty(NettyServerCnxnFactory.PORT_UNIFICATION_KEY);\n+ System.clearProperty(ZKClientConfig.SECURE_CLIENT);\n+\n+ final int SERVER_COUNT = 3;\n+ final int[] clientPorts = new int[SERVER_COUNT];\n+ int[] secureClientPorts = new int[SERVER_COUNT];\n+\n+ MainThread[] mt = startThreeNodeSSLCluster(clientPorts, secureClientPorts);\n+\n+ // Servers have been set up. Now go test if both secure and unsecure connection is successful.\n+ for (int i = 0; i < SERVER_COUNT; i++) {\n+\n+ // testing the secure connection, also do some simple operation to verify that it works\n+ ZKClientConfig secureClientConfig = new ZKClientConfig();\n+ secureClientConfig.setProperty(ZKClientConfig.SECURE_CLIENT, \"true\");\n+ ZooKeeper zkSecure = ClientBase.createZKClient(\"127.0.0.1:\" + secureClientPorts[i], TIMEOUT, secureClientConfig);\n+ zkSecure.create(\"/test\", \"\".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);\n \n Review comment:\n @anmolnar suggested `3.6.0`, to be a bit more consistent with the existing tags. \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Dec/19 12:56;githubbot;600", "Log Work__5": "asf-ci commented on issue #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#issuecomment-564527847\n \n \n \n Refer to this link for build results (access rights to CI server needed): \n https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build-maven/1708/\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;11/Dec/19 12:57;githubbot;600", "Log Work__6": "symat commented on issue #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#issuecomment-573663983\n \n \n @eolivelli what do you think the suggested improvement on the Java client API?\n \n @anmolnar PTAL\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;13/Jan/20 13:30;githubbot;600", "Log Work__7": "eolivelli commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#discussion_r365857473\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxn.java\n ##########\n @@ -1679,6 +1680,13 @@ States getState() {\n return state;\n }\n \n+ /**\n+ * Returns true if SSL connection was requested and the actual ClientCnxnSocket supports SSL\n+ */\n+ public boolean isSSL() {\n \n Review comment:\n I would go for 'isSecure'\n \n But honestly I don't see value in having this method.\n \n How will the application benefit from this API?\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;13/Jan/20 15:14;githubbot;600", "Log Work__8": "symat commented on pull request #1170: ZOOKEEPER-3643: Testing and documenting secure and unsecure ZK client connections\nURL: https://github.com/apache/zookeeper/pull/1170#discussion_r367466370\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/ClientCnxn.java\n ##########\n @@ -1679,6 +1680,13 @@ States getState() {\n return state;\n }\n \n+ /**\n+ * Returns true if SSL connection was requested and the actual ClientCnxnSocket supports SSL\n+ */\n+ public boolean isSSL() {\n \n Review comment:\n well... I actually added this after your comment / change request. I thought you would think this to be a good idea :)\n > Is there a way to check that we are using a secure connection?\n \n I can imagine a use-case, when the application wants to really verify that the channel is secure before sending any sensitive data to ZooKeeper. You can simply override the SSL related config with a system property when you start the application (even by accident, simply just by forgetting to specify the system property to use Netty socket implementation), and then you run your application assuming you use SSL, but you don't.\n \n But anyway, I don't want to make the API more complex... if you think it is unnecessary, we can drop it and revert my last commit. \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;16/Jan/20 15:01;githubbot;600", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 5400, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 5400, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-12-10 09:25:05.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z09igg:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "ZK digest ACL permissions gets overridden", "Issue key": "ZOOKEEPER-3617", "Issue id": 13268474, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "vrinda", "Creator": "vrinda", "Created": "15/Nov/19 05:28", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.4.9", "Affects Version/s__1": "3.5.5", "Affects Version/s__2": "", "Component/s": "security", "Component/s__1": "server", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "I was able to add one user with /crdwa/ access.\n The moment I add another user with read-only access- /r/. The first user - /user1/\n gets overridden with read-only access. Please see the output below :\n\n \n{code:java}\nWatchedEvent state:SyncConnected type:None path:null\n[zk: localhost:2181(CONNECTED) 0]  addauth digest user1:password1\n[zk: localhost:2181(CONNECTED) 1] setAcl /newznode auth:user1:password1:crwad\ncZxid = 0xe\nctime = Thu Nov 07 13:29:43 IST 2019\nmZxid = 0xe\nmtime = Thu Nov 07 13:29:43 IST 2019\npZxid = 0xe\ncversion = 0\ndataVersion = 0\naclVersion = 1\nephemeralOwner = 0x0\ndataLength = 8\nnumChildren = 0\n[zk: localhost:2181(CONNECTED) 2] getAcl /newznode\n'digest,'user1:XDkd2dsEuhc9ImU3q8pa8UOdtpI=\n: cdrwa\n[zk: localhost:2181(CONNECTED) 3] addauth digest user2:password2\n[zk: localhost:2181(CONNECTED) 4] setAcl /newznode auth:user2:password2:r\ncZxid = 0xe\nctime = Thu Nov 07 13:29:43 IST 2019\nmZxid = 0xe\nmtime = Thu Nov 07 13:29:43 IST 2019\npZxid = 0xe\ncversion = 0\ndataVersion = 0\naclVersion = 2\nephemeralOwner = 0x0\ndataLength = 8\nnumChildren = 0\nzk: localhost:2181(CONNECTED) 5] getAcl /newznode\n'digest,'user1:XDkd2dsEuhc9ImU3q8pa8UOdtpI=\n: r\n'digest,'user2:lo/iTtNMP+gEZlpUNaCqLYO3i5U=\n: r\n{code}\n \n\nIf setAcl for both the users at the same time. I get both users duplicated, one with readonly and another with cdrwa permissions, as below:\n\n \n{code:java}\n[zk: localhost:2181(CONNECTED) 1] getAcl /zk_test\n'world,'anyone\n: cdrwa\n[zk: localhost:2181(CONNECTED) 2]  addauth digest user1:password1\n[zk: localhost:2181(CONNECTED) 3] addauth digest user2:password2\n[zk: localhost:2181(CONNECTED) 5] \nsetAcl /zk_test auth:user2:password2:r,auth:user1:password1:cdrwa  \ncZxid = 0x2\nctime = Wed Nov 13 20:14:08 IST 2019\nmZxid = 0x2\nmtime = Wed Nov 13 20:14:08 IST 2019\npZxid = 0x2\ncversion = 0\ndataVersion = 0\naclVersion = 2\nephemeralOwner = 0x0\ndataLength = 7\nnumChildren = 0\n[zk: localhost:2181(CONNECTED) 7] getAcl /zk_test\n'digest,'user1:XDkd2dsEuhc9ImU3q8pa8UOdtpI=\n: r\n'digest,'user2:lo/iTtNMP+gEZlpUNaCqLYO3i5U=\n: r\n'digest,'user1:XDkd2dsEuhc9ImU3q8pa8UOdtpI=\n: cdrwa\n'digest,'user2:lo/iTtNMP+gEZlpUNaCqLYO3i5U=\n: cdrwa\n{code}", "Environment": "", "Log Work": "maoling commented on pull request #1302: ZOOKEEPER-3617: ZK digest ACL permissions gets overridden\nURL: https://github.com/apache/zookeeper/pull/1302\n \n \n - more details in the [ZOOKEEPER-3617](https://issues.apache.org/jira/browse/ZOOKEEPER-3617)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;30/Mar/20 06:29;githubbot;600", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 600, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 600, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Oct 15 01:48:17 UTC 2020", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z08n1s:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "29/Feb/20 08:49;maoling;[~vrinda]\n\nI am Looking, If it's really a bug, I will push a PR to fix it asap!;;;", "Comment__1": "14/Oct/20 06:59;chelam;[~maoling], Could you please let us know if the issue is fixed?\n\n \n\n ;;;", "Comment__2": "15/Oct/20 01:48;maoling;[~chelam] I had a fixed patch and that PR is still pending to be reviewed.;;;", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "add a new documentation: zookeeperCodingGuide.md", "Issue key": "ZOOKEEPER-3616", "Issue id": 13268279, "Parent id": 13216608, "Issue Type": "Sub-task", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "14/Nov/19 10:54", "Updated": "18/Nov/19 04:01", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "documentation", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling commented on pull request #1148: ZOOKEEPER-3616:add a new documentation: zookeeperCodingGuide.md\nURL: https://github.com/apache/zookeeper/pull/1148\n \n \n - I refer the code guide of [Bookkeeper](https://github.com/apache/bookkeeper/blob/master/site/community/coding_guide.md). Looking forward to others‘ supplements\n - more details in the [ZOOKEEPER-3616](https://issues.apache.org/jira/browse/ZOOKEEPER-3616)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 04:01;githubbot;600", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 600, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 600, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-11-14 10:54:23.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z08lug:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation", "Issue key": "ZOOKEEPER-3611", "Issue id": 13267446, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "11/Nov/19 10:54", "Updated": "17/Dec/19 09:37", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling commented on pull request #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149\n \n \n - add three new modes: `STANDARD_CHILD`,`STANDARD_DATA`, `STANDARD_EXIST` to `addWatch()` api to keep behavior and semantics consistency with the original tradational one-time watch. For example: `zk.getChildren(path, watch, stat);` equals to `zk.addWatch(path, watch, STANDARD_CHILD);`\n - make the CLI: `addWatch` more user friendly and add a doc.\n - more details in the [ZOOKEEPER-3611](https://issues.apache.org/jira/browse/ZOOKEEPER-3611)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 08:01;githubbot;600", "Log Work__1": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555075287\n \n \n This PR is missing some changes. DataTree's `addWatch()` method needs to be updated. Currently it adds the watcher to both `dataWatches` and `childWatches`. This means that there actually is no distinction between STANDARD_CHILD, STANDARD_DATA, STANDARD_EXIST.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 15:48;githubbot;600", "Log Work__2": "Randgalt commented on pull request #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#discussion_r347457248\n \n \n\n ##########\n File path: zookeeper-server/src/test/java/org/apache/zookeeper/test/AddWatchTest.java\n ##########\n @@ -0,0 +1,204 @@\n+/**\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements. See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership. The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License. You may obtain a copy of the License at\n+ *

\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *

\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zookeeper.test;\n+\n+import static org.apache.zookeeper.AddWatchMode.STANDARD_CHILD;\n+import static org.apache.zookeeper.AddWatchMode.STANDARD_DATA;\n+import static org.apache.zookeeper.AddWatchMode.STANDARD_EXIST;\n+import java.io.IOException;\n+import java.util.concurrent.BlockingQueue;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.concurrent.LinkedBlockingQueue;\n+import java.util.concurrent.TimeUnit;\n+import org.apache.zookeeper.AsyncCallback;\n+import org.apache.zookeeper.CreateMode;\n+import org.apache.zookeeper.KeeperException;\n+import org.apache.zookeeper.WatchedEvent;\n+import org.apache.zookeeper.Watcher;\n+import org.apache.zookeeper.ZooDefs;\n+import org.apache.zookeeper.ZooKeeper;\n+import org.junit.After;\n+import org.junit.Assert;\n+import org.junit.Before;\n+import org.junit.Test;\n+\n+/**\n+ * The unit test for zookeeper addWatch api for standard one-time watcher.\n+ */\n+public class AddWatchTest extends ClientBase {\n \n Review comment:\n More tests are needed. In particular tests that distinguish between STANDARD_EXIST, STANDARD_CHILD and STANDARD_DATA. Due to my other comment, watches currently trigger on all events.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 15:49;githubbot;600", "Log Work__3": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555077038\n \n \n I think `STANDARD_EXIST` needs to trigger immediately when if the node exists. Look how DataTree's setWatches() handles exist watchers. \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 15:51;githubbot;600", "Log Work__4": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555077038\n \n \n I think `STANDARD_EXIST` needs to trigger immediately if the node exists. Look how DataTree's setWatches() handles exist watchers. \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 15:52;githubbot;600", "Log Work__5": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555075287\n \n \n This PR is missing some changes. DataTree's `addWatch()` method needs to be updated. Currently it adds the watcher to both `dataWatches` and `childWatches`. This means that there actually is no distinction between STANDARD_CHILD, STANDARD_DATA, STANDARD_EXIST.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 16:36;githubbot;600", "Log Work__6": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555077038\n \n \n I think `STANDARD_EXIST` needs to trigger immediately if the node exists. Look how DataTree's setWatches() handles exist watchers. \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 16:37;githubbot;600", "Log Work__7": "Randgalt commented on pull request #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#discussion_r347486822\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java\n ##########\n @@ -736,6 +736,12 @@ public AddWatchRegistration(Watcher watcher, String clientPath, AddWatchMode mod\n return watchManager.persistentWatches;\n case PERSISTENT_RECURSIVE:\n return watchManager.persistentRecursiveWatches;\n+ case STANDARD_CHILD:\n+ return watchManager.childWatches;\n+ case STANDARD_DATA:\n+ return watchManager.dataWatches;\n+ case STANDARD_EXIST:\n+ return rc == 0 ? watchManager.dataWatches : watchManager.existWatches;\n \n Review comment:\n This line of code will need to be revisited if `STANDARD_EXIST` triggers immediately per my other comment. If the node existed assume the watcher was trigger and return `null` so that it isn't stored.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 16:40;githubbot;600", "Log Work__8": "Randgalt commented on pull request #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#discussion_r347491354\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/ZooDefs.java\n ##########\n @@ -157,6 +157,12 @@\n int persistent = 0; // matches AddWatchMode.PERSISTENT\n \n int persistentRecursive = 1; // matches AddWatchMode.PERSISTENT_RECURSIVE\n+\n+ int standardChild = 2;\n \n Review comment:\n Add \"matches\" comment like the other two\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 16:48;githubbot;600", "Log Work__9": "Randgalt commented on pull request #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#discussion_r347492096\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/AddWatchCommand.java\n ##########\n @@ -56,24 +57,32 @@ public CliCommand parse(String[] cmdArgs) throws CliParseException {\n } catch (ParseException ex) {\n throw new CliParseException(ex);\n }\n- if (cl.getArgs().length != 2) {\n+ if (cl.getArgs().length != 2 || cl.getOptions().length != 1) {\n throw new CliParseException(getUsageStr());\n }\n \n- if (cl.hasOption(\"m\")) {\n- try {\n- mode = AddWatchMode.valueOf(cl.getOptionValue(\"m\").toUpperCase());\n- } catch (IllegalArgumentException e) {\n- throw new CliParseException(getUsageStr());\n- }\n- }\n-\n return this;\n }\n \n @Override\n public boolean exec() throws CliException {\n String path = cl.getArgs()[1];\n+ if (cl.hasOption(\"d\")) {\n \n Review comment:\n Needs an error message if more than 1 is specified.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 16:50;githubbot;600", "Log Work__10": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555108919\n \n \n Thinking more about my comments on `STANDARD_EXIST`. I'm not sure what the right thing to do is. In the pre 3.6 ZK, setting an exists watcher is combined with an `exists()` request. So, the caller finds out about node existence and leaves a watcher either way. With `addWatch()` the caller won't know about node existence so that's why I suggested triggering immediately if the node exists. But, then, there's no way to set a watch via `addWatch()` that triggers if a node is deleted. I wonder if we also need `STANDARD_DELETED`? I'll think more but would appreciate other comments.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 16:59;githubbot;600", "Log Work__11": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555108919\n \n \n Thinking more about my comments on `STANDARD_EXIST`. I'm not sure what the right thing to do is. In the pre 3.6 ZK, setting an exists watcher is combined with an `exists()` request. So, the caller finds out about node existence and leaves a watcher either way. With `addWatch()` the caller won't know about node existence so that's why I suggested triggering immediately if the node exists. But, then, there's no way to set a watch via `addWatch()` that triggers if a node is deleted. I wonder if we also need `STANDARD_DELETED`? I'll think more but would appreciate other comments.\n \n ----\n \n More: OK - I think `STANDARD_EXIST` should be removed from `addWatch()`. Essentially, the existing `exists()` method is the same thing as addWatch STANDARD_EXIST but it returns a Stat object so that the caller can know about node existence and the watch that gets set implies the correct thing.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 17:05;githubbot;600", "Log Work__12": "Randgalt commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555108919\n \n \n Thinking more about my comments on `STANDARD_EXIST`. I'm not sure what the right thing to do is. In the pre 3.6 ZK, setting an exists watcher is combined with an `exists()` request. So, the caller finds out about node existence and leaves a watcher either way. With `addWatch()` the caller won't know about node existence so that's why I suggested triggering immediately if the node exists. But, then, there's no way to set a watch via `addWatch()` that triggers if a node is deleted. I wonder if we also need `STANDARD_DELETED`? I'll think more but would appreciate other comments.\n \n ----\n \n More: OK - I think `STANDARD_EXIST` should be removed from `addWatch()`. Essentially, the existing `exists()` method is the same thing as addWatch STANDARD_EXIST but it returns a Stat object so that the caller can know about node existence and the watch that gets set implies the correct thing. Or, alternatively, `addWatch()` can be changed to return a `Stat` object and `STANDARD_EXIST` would be an alias for `exists(path, watcher)`.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Nov/19 17:06;githubbot;600", "Log Work__13": "maoling commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555859965\n \n \n Let me process PR-1010 firstly, then come back to this one.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;20/Nov/19 06:29;githubbot;600", "Log Work__14": "maoling commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555859965\n \n \n I will process this PR this week.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;02/Dec/19 01:53;githubbot;600", "Log Work__15": "asf-ci commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-566443031\n \n \n \n Refer to this link for build results (access rights to CI server needed): \n https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build-maven/1743/

Build result: FAILURE

[...truncated 1001.66 KB...][JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/pom.xml to org.apache.zookeeper/parent/3.7.0-SNAPSHOT/parent-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-recipes/zookeeper-recipes-lock/pom.xml to org.apache.zookeeper/zookeeper-recipes-lock/3.7.0-SNAPSHOT/zookeeper-recipes-lock-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-contrib/pom.xml to org.apache.zookeeper/zookeeper-contrib/3.7.0-SNAPSHOT/zookeeper-contrib-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-client/pom.xml to org.apache.zookeeper/zookeeper-client/3.7.0-SNAPSHOT/zookeeper-client-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-jute/pom.xml to org.apache.zookeeper/zookeeper-jute/3.7.0-SNAPSHOT/zookeeper-jute-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-jute/target/zookeeper-jute-3.7.0-SNAPSHOT.jar to org.apache.zookeeper/zookeeper-jute/3.7.0-SNAPSHOT/zookeeper-jute-3.7.0-SNAPSHOT.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-jute/target/zookeeper-jute-3.7.0-SNAPSHOT-tests.jar to org.apache.zookeeper/zookeeper-jute/3.7.0-SNAPSHOT/zookeeper-jute-3.7.0-SNAPSHOT-tests.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-jute/target/zookeeper-jute-3.7.0-SNAPSHOT-sources.jar to org.apache.zookeeper/zookeeper-jute/3.7.0-SNAPSHOT/zookeeper-jute-3.7.0-SNAPSHOT-sources.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-jute/target/zookeeper-jute-3.7.0-SNAPSHOT-javadoc.jar to org.apache.zookeeper/zookeeper-jute/3.7.0-SNAPSHOT/zookeeper-jute-3.7.0-SNAPSHOT-javadoc.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-recipes/zookeeper-recipes-queue/pom.xml to org.apache.zookeeper/zookeeper-recipes-queue/3.7.0-SNAPSHOT/zookeeper-recipes-queue-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-docs/pom.xml to org.apache.zookeeper/zookeeper-docs/3.7.0-SNAPSHOT/zookeeper-docs-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-docs/target/zookeeper-docs-3.7.0-SNAPSHOT.jar to org.apache.zookeeper/zookeeper-docs/3.7.0-SNAPSHOT/zookeeper-docs-3.7.0-SNAPSHOT.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-docs/target/zookeeper-docs-3.7.0-SNAPSHOT-tests.jar to org.apache.zookeeper/zookeeper-docs/3.7.0-SNAPSHOT/zookeeper-docs-3.7.0-SNAPSHOT-tests.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-docs/target/zookeeper-docs-3.7.0-SNAPSHOT-sources.jar to org.apache.zookeeper/zookeeper-docs/3.7.0-SNAPSHOT/zookeeper-docs-3.7.0-SNAPSHOT-sources.jar[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-recipes/pom.xml to org.apache.zookeeper/zookeeper-recipes/3.7.0-SNAPSHOT/zookeeper-recipes-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-client/zookeeper-client-c/pom.xml to org.apache.zookeeper/zookeeper-client-c/3.7.0-SNAPSHOT/zookeeper-client-c-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-contrib/zookeeper-contrib-rest/pom.xml to org.apache.zookeeper/zookeeper-contrib-rest/3.7.0-SNAPSHOT/zookeeper-contrib-rest-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-assembly/pom.xml to org.apache.zookeeper/zookeeper-assembly/3.7.0-SNAPSHOT/zookeeper-assembly-3.7.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/jenkins-slave/workspace/PreCommit-ZOOKEEPER-github-pr-build-maven/zookeeper-contrib/zookeeper-contrib-zooinspector/pom.xml to org.apache.zookeeper/zookeeper-contrib-zooinspector/3.7.0-SNAPSHOT/zookeeper-contrib-zooinspector-3.7.0-SNAPSHOT.pomchannel stopped[SpotBugs] Skipping execution of recorder since overall result is 'FAILURE'Setting status of 3c05834a4ff2ca88c55c2ae9b63b7b1f4cd76d9f to FAILURE with url https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build-maven/1743/ and message: 'FAILURE 'Using context: JenkinsMaven\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;17/Dec/19 08:46;githubbot;600", "Log Work__16": "maoling commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-555859965\n \n \n @Randgalt \n \n - > This PR is missing some changes. DataTree's addWatch() method needs to be updated. Currently it adds the watcher to both dataWatches and childWatches. \n \n Yes, it is. I have changed it. Think further, it don't affect the correctness of watch, the client cannot trigger twice, so I don't find this bug in the original patch.\n \n - > Or, alternatively, addWatch() can be changed to return a Stat object and STANDARD_EXIST would be an alias for exists(path, watcher).\n \n I pick up this solution.\n \n - An obstacle I met is: when switch `PERSISTENT` watch to `STANDARD` watch in the same session. For example:\n ```\n [zk: localhost:2181(CONNECTED) 25] addWatch -p /test-watch\n [zk: localhost:2181(CONNECTED) 26] set /test-watch \"foo\"\n WATCHER::\n WatchedEvent state:SyncConnected type:NodeDataChanged path:/test-watch\n [zk: localhost:2181(CONNECTED) 27] addWatch -c /test-watch\n [zk: localhost:2181(CONNECTED) 28] set /test-watch \"foo\"\n WATCHER::\n WatchedEvent state:SyncConnected type:NodeDataChanged path:/test-watch\n [zk: localhost:2181(CONNECTED) 29] create /test-watch/ch-88\n WATCHER::\n WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/test-watch\n Created /test-watch/ch-88\n ```\n when adding a child watch, it can also leave a data watch one that node. Switching `STANDARD` watch to `PERSISTENT` watch doesn't have that problem. Between that switch, we need a `removeWatch` to clean up the `PERSISTENT` watch. I also want to implement: a watch can override the previous PERSISTENT watch automatically on the server side, but it needs to change more codes.\n \n \n - The behavior of `PERSISTENT` watch is a little confused: it can also be triggered when its child has changed(first level). Overlap with `PERSISTENT_RECURSIVE`? It should only be fired when changes made by itself?\n \n - addWatch api needs to check the null watch. `e.g zk.addWatch(BASE_PATH, null, STANDARD_CHILD);`\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;17/Dec/19 08:47;githubbot;600", "Log Work__17": "boromee commented on issue #1149: ZOOKEEPER-3611:addWatch api supports all watch event type, strengthen the corresponding CLI and add a documentation\nURL: https://github.com/apache/zookeeper/pull/1149#issuecomment-566454198\n \n \n unsubscribe\n \n \n \n \n ---Original---\n From: \"ASF CI System\"Failed Tests: 1

PreCommit-ZOOKEEPER-github-pr-build-maven/org.apache.zookeeper:zookeeper: 1

\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;17/Dec/19 09:37;githubbot;600", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 11400, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 11400, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-3281", "Inward issue link (Reference)__1": "ZOOKEEPER-1416", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Tue Nov 12 02:24:30 UTC 2019", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z08gpc:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "11/Nov/19 13:31;randgalt;It occurs to me that the new ZooKeeper.addWatch() API could be extended to support all watch types as well. Thoughts?;;;", "Comment__1": "12/Nov/19 02:24;maoling;[~randgalt]\n\nYep, let me try this job :);;;", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "support the complete linearizable read and multiply read consistency level", "Issue key": "ZOOKEEPER-3600", "Issue id": 13265507, "Parent id": "", "Issue Type": "New Feature", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "31/Oct/19 10:44", "Updated": "02/Sep/22 11:58", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.6.3", "Affects Version/s__1": "3.7.0", "Affects Version/s__2": "", "Component/s": "documentation", "Component/s__1": "java client", "Component/s__2": "server", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling commented on pull request #1137: ZOOKEEPER-3600:[WIP]support the complete Linearizability Read\nURL: https://github.com/apache/zookeeper/pull/1137\n \n \n - this is still a work in the progress,Plz don't review before removing the WIP tag\n - more details in the [ZOOKEEPER-3600](https://issues.apache.org/jira/browse/ZOOKEEPER-3600)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;07/Nov/19 07:12;githubbot;600", "Log Work__1": "eolivelli commented on code in PR #1137:\nURL: https://github.com/apache/zookeeper/pull/1137#discussion_r961597059\n\n\n##########\nzookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java:\n##########\n@@ -2026,6 +2031,87 @@ public void getData(final String path, Watcher watcher, DataCallback cb, Object\n cnxn.queuePacket(h, new ReplyHeader(), request, response, cb, clientPath, serverPath, ctx, wcb);\n }\n \n+ /**\n+ * TODO\n+ * @param path\n+ * @param watcher\n+ * @param readMode\n+ * @return\n+ * @throws KeeperException\n+ * @throws InterruptedException\n+ * @since\n+ */\n+ public CompletableFuture getData(ReadConsistencyMode readMode, final String path, Watcher watcher) throws KeeperException, InterruptedException {\n\nReview Comment:\n CompletableFuture is tricky, because there is no control over the thread that execute any callback/listener\n \n it is appealing but I won't use it here, all the API is based on callbacks that are guaranteed to be executed in the ZK thread \n\n\n\n##########\nzookeeper-server/src/main/java/org/apache/zookeeper/client/ReadConsistencyMode.java:\n##########\n@@ -0,0 +1,55 @@\n+/*\n+ * Licensed to the Apache Software Foundation (ASF) under one\n+ * or more contributor license agreements. See the NOTICE file\n+ * distributed with this work for additional information\n+ * regarding copyright ownership. The ASF licenses this file\n+ * to you under the Apache License, Version 2.0 (the\n+ * \"License\"); you may not use this file except in compliance\n+ * with the License. You may obtain a copy of the License at\n+ *\n+ * http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+package org.apache.zookeeper.client;\n+\n+import org.apache.yetus.audience.InterfaceAudience;\n+\n+/**\n+ * TODO\n+ * @since 3.7.0\n+ */\n+@InterfaceAudience.Public\n+public enum ReadConsistencyMode {\n+ SEQUENTIAL_READ(\"Sequential Read\"),\n+ ORDERED_SEQUENTIAL_READ(\"Ordered Sequential Read\"),\n+ LINEARIZABLE_READ(\"Linearizable Read\"),\n+ LEASE_READ(\"Lease Read\"),\n+ DUMMY_READ(\"Dummy Read Used For Testing\");\n\nReview Comment:\n we should remove this DUMMY_READ mode\n\n\n\n##########\nzookeeper-server/src/main/java/org/apache/zookeeper/server/quorum/CommitProcessor.java:\n##########\n@@ -249,14 +253,18 @@ public void run() {\n && (maxReadBatchSize < 0 || readsProcessed <= maxReadBatchSize)\n && (request = queuedRequests.poll()) != null) {\n requestsToProcess--;\n+ //System.out.println(\"fuck__CommitProcessor_needCommit(request):\" + needCommit(request) + \",pendingRequests.containsKey(request.sessionId):\"+\n\nReview Comment:\n please do not commit this lines or put them in PRs\n they are sent over the mailing lists and tracked in the archives\n\n\n\n##########\nzookeeper-server/src/main/java/org/apache/zookeeper/ZooDefs.java:\n##########\n@@ -55,6 +55,9 @@ public interface OpCode {\n \n int sync = 9;\n \n+ // sync\n+ int syncedRead = 10;\n\nReview Comment:\n why using 10 ? isn't it better to use 109 ?\n\n\n\n;02/Sep/22 11:58;githubbot;600", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 1200, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 1200, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-1675", "Inward issue link (Reference)__1": "ZOOKEEPER-3414", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-10-31 10:44:17.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z084qg:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Add a documentation about docker", "Issue key": "ZOOKEEPER-3587", "Issue id": 13262989, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "18/Oct/19 02:08", "Updated": "23/Nov/19 06:47", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "documentation", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "A Follow-up documentation work: [https://github.com/apache/zookeeper/pull/1075]", "Environment": "", "Log Work": "maoling commented on pull request #1122: ZOOKEEPER-3587:Add a documentation about docker\nURL: https://github.com/apache/zookeeper/pull/1122\n \n \n - A follow-up documentation work of [PR-1075](https://github.com/apache/zookeeper/pull/1075) \n - Update and optimize the github homepage. the preview is [here ](https://github.com/maoling/zookeeper/tree/ZOOKEEPER-3587)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;18/Oct/19 10:25;githubbot;600", "Log Work__1": "anmolnar commented on issue #1122: ZOOKEEPER-3587:Add a documentation about docker\nURL: https://github.com/apache/zookeeper/pull/1122#issuecomment-557658573\n \n \n @maoling Those docker images are not maintained by the ZooKeeper community, hence they're not official.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;22/Nov/19 19:17;githubbot;600", "Log Work__2": "maoling commented on issue #1122: ZOOKEEPER-3587:Add a documentation about docker\nURL: https://github.com/apache/zookeeper/pull/1122#issuecomment-557768253\n \n \n @anmolnar \n I change my wording to: `Docker official ZooKeeper image`, the word `official` is for `docker`, not for `zookeeper`. WDYT?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;23/Nov/19 05:16;githubbot;600", "Log Work__3": "asf-ci commented on issue #1122: ZOOKEEPER-3587:Add a documentation about docker\nURL: https://github.com/apache/zookeeper/pull/1122#issuecomment-557770313\n \n \n \n Refer to this link for build results (access rights to CI server needed): \n https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build-maven/1645/\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;23/Nov/19 05:59;githubbot;600", "Log Work__4": "anmolnar commented on issue #1122: ZOOKEEPER-3587:Add a documentation about docker\nURL: https://github.com/apache/zookeeper/pull/1122#issuecomment-557772850\n \n \n @maoling I believe that we should have a common agreement in the community about the topic before adding it to documentation. I'm not sure if there's demand to support dockerized ZooKeeper in any way or support docker images of ZooKeeper.\n \n We can discuss it here as well or on the dev list.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;23/Nov/19 06:47;githubbot;600", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 3000, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 3000, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-10-18 02:08:56.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z07po0:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Add a documentation about RequestProcessors", "Issue key": "ZOOKEEPER-3585", "Issue id": 13262828, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "17/Oct/19 10:23", "Updated": "17/Dec/19 13:00", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "documentation", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling commented on pull request #1126: ZOOKEEPER-3585:[WIP]Add a documentation about RequestProcessors\nURL: https://github.com/apache/zookeeper/pull/1126\n \n \n - this is still a work in the progress,Plz don't review before removing the WIP tag.\n - more details in the [ZOOKEEPER-3585](https://issues.apache.org/jira/browse/ZOOKEEPER-3585)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;25/Oct/19 06:22;githubbot;600", "Log Work__1": "anmolnar commented on issue #1126: ZOOKEEPER-3585:[WIP]Add a documentation about RequestProcessors\nURL: https://github.com/apache/zookeeper/pull/1126#issuecomment-560018171\n \n \n I always support adding documentation, but fyi RequestProcessors are very well documented in the book.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;30/Nov/19 20:24;githubbot;600", "Log Work__2": "maoling commented on issue #1126: ZOOKEEPER-3585:[WIP]Add a documentation about RequestProcessors\nURL: https://github.com/apache/zookeeper/pull/1126#issuecomment-560058625\n \n \n @anmolnar \n - > but fyi RequestProcessors are very well documented in the book.\n \n Which book? Could you plz share us with the book name?\n - The structure of request processor chain has not changed, but some important improvements had done these years especially for `CommitProcessor`(e.g: ZOOKEEPER-2024), we will show them in a detailed and understanding way in that documentation work.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;01/Dec/19 05:28;githubbot;600", "Log Work__3": "eolivelli commented on issue #1126: ZOOKEEPER-3585:[WIP]Add a documentation about RequestProcessors\nURL: https://github.com/apache/zookeeper/pull/1126#issuecomment-560108899\n \n \n @maoling AFAIK there is only ONE great book about Zookeeper :) \n Search Zookeeper on Amazon\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;01/Dec/19 13:33;githubbot;600", "Log Work__4": "maoling commented on issue #1126: ZOOKEEPER-3585:[WIP]Add a documentation about RequestProcessors\nURL: https://github.com/apache/zookeeper/pull/1126#issuecomment-560192848\n \n \n @eolivelli \n My aim is making the official documentation better than any book:)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;02/Dec/19 01:51;githubbot;600", "Log Work__5": "anmolnar commented on issue #1126: ZOOKEEPER-3585:[WIP]Add a documentation about RequestProcessors\nURL: https://github.com/apache/zookeeper/pull/1126#issuecomment-566531655\n \n \n @maoling Sure. Please let me know if you're done.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;17/Dec/19 13:00;githubbot;600", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 3600, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 3600, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-2024", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-10-17 10:23:51.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z07oo8:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Add new apis to get node type and ttl time info", "Issue key": "ZOOKEEPER-3583", "Issue id": 13262494, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "16/Oct/19 02:05", "Updated": "02/Dec/19 04:35", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "other", "Component/s__1": "scripts", "Component/s__2": "", "Due Date": "", "Votes": 1, "Labels": "pull-request-available", "Labels__1": "", "Description": "stat -d to show more details:node type, ttl time info\n{code:java}\n[zk: 127.0.0.1:2180(CONNECTED) 15] stat /test\ncZxid = 0xfa3c001b7ce4\nctime = Tue Oct 15 14:07:03 CST 2019\nmZxid = 0xfa3c001b7d32\nmtime = Tue Oct 15 16:52:28 CST 2019\npZxid = 0xfa3c001b7d33\ncversion = 11\ndataVersion = 42\naclVersion = 0\nephemeralOwner = 0x0\ndataLength = 6\nnumChildren = 11\n{code}", "Environment": "", "Log Work": "maoling commented on pull request #1125: ZOOKEEPER-3583:Add new apis to get node type and ttl time info\nURL: https://github.com/apache/zookeeper/pull/1125\n \n \n - Add new apis: `getStatPersisted, getTTL, getNodeType` in the `ZooKeeper.java`\n - Currently, the `ephemeralOwner` of stat returned from java native client is not the actual one, due to the method `DataNode#getClientEphemeralOwner`, I cannot change it for the compatibility.\n - `getStatPersisted` mainly is used for getting the actual `ephemeralOwner` stored in the disk, Only use the actual `ephemeralOwner` stored in the disk, can we get the node type and ttl time info.\n - `stat -d /path` to show more details about a node\n - more details in the [ZOOKEEPER-3583](https://issues.apache.org/jira/browse/ZOOKEEPER-3583)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;25/Oct/19 06:14;githubbot;600", "Log Work__1": "jhuan31 commented on pull request #1125: ZOOKEEPER-3583:Add new apis to get node type and ttl time info\nURL: https://github.com/apache/zookeeper/pull/1125#discussion_r350354899\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/cli/StatCommand.java\n ##########\n @@ -93,6 +98,25 @@ public boolean exec() throws CliException {\n throw new CliWrapperException(new KeeperException.NoNodeException(path));\n }\n new StatPrinter(out).print(stat);\n+\n+ boolean hasD = cl.hasOption(\"d\");\n+ if (hasD) {\n+ StatPersisted statPersisted;\n+ try {\n+ statPersisted = zk.getStatPersisted(path);\n+ } catch (KeeperException | InterruptedException e) {\n+ e.printStackTrace();\n+ return watch;\n+ }\n+ CreateMode mode = CreateMode.getNodeMode(statPersisted.getEphemeralOwner());\n+ out.println(\"node type = \" + CreateMode.getModeName(mode.getFlag()));\n+ if (mode == CreateMode.PERSISTENT_WITH_TTL) {\n+ long ttl = EphemeralType.TTL.getValue(statPersisted.getEphemeralOwner());\n+ out.println(\"ttl time = \" + ttl);\n+ long timeDiff = ttl - (Time.currentWallTime() - statPersisted.getMtime());\n+ out.println(\"remaining time = \" + (timeDiff < 0 ? 0 : timeDiff));\n \n Review comment:\n Maybe put these in StatDetailPrinter or something?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;25/Nov/19 18:41;githubbot;600", "Log Work__2": "jhuan31 commented on pull request #1125: ZOOKEEPER-3583:Add new apis to get node type and ttl time info\nURL: https://github.com/apache/zookeeper/pull/1125#discussion_r350353487\n \n \n\n ##########\n File path: zookeeper-server/src/main/java/org/apache/zookeeper/CreateMode.java\n ##########\n @@ -102,7 +105,7 @@ public boolean isTTL() {\n return isTTL;\n }\n \n- public int toFlag() {\n+ public int getFlag() {\n \n Review comment:\n Even though getFlag() is more conventional, I think toFlag() makes more sense here\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;25/Nov/19 18:41;githubbot;600", "Log Work__3": "asf-ci commented on issue #1125: ZOOKEEPER-3583:Add new apis to get node type and ttl time info\nURL: https://github.com/apache/zookeeper/pull/1125#issuecomment-560225427\n \n \n \n Refer to this link for build results (access rights to CI server needed): \n https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build-maven/1674/\n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;02/Dec/19 04:35;githubbot;600", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 2400, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 2400, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-10-16 02:05:20.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z07mm0:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Add a new CLI: multi", "Issue key": "ZOOKEEPER-3578", "Issue id": 13262130, "Parent id": "", "Issue Type": "New Feature", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "14/Oct/19 10:35", "Updated": "15/Oct/19 02:49", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "scripts", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Tue Oct 15 02:49:56 UTC 2019", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z07kd4:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "15/Oct/19 02:49;maoling;Look at an example from redis: [https://redis.io/topics/transactions]\n{code:java}\n> MULTI\nOK\n> INCR foo\nQUEUED\n> INCR bar\nQUEUED\n> EXEC\n1) (integer) 1\n2) (integer) 1\n\n\n> SET foo 1\nOK\n> MULTI\nOK\n> INCR foo\nQUEUED\n> DISCARD\nOK\n> GET foo\n\"1\"\n{code};;;", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "[admin server way] Add a complete backup mechanism for zookeeper internal", "Issue key": "ZOOKEEPER-3499", "Issue id": 13249579, "Parent id": "", "Issue Type": "New Feature", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "08/Aug/19 06:43", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "server", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "", "Environment": "", "Log Work": "maoling commented on pull request #1044: ZOOKEEPER-3499:[admin server way] Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/1044\n \n \n - the description about this PR can be found in its document\n - Link to [PR-917](https://github.com/apache/zookeeper/pull/917)\n - more details in the [ZOOKEEPER-3499](https://issues.apache.org/jira/browse/ZOOKEEPER-3499)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;08/Aug/19 07:41;githubbot;600", "Log Work__1": "li4wang commented on PR #1044:\nURL: https://github.com/apache/zookeeper/pull/1044#issuecomment-1118853540\n\n @maoling `backup` and `recovery/restore` via admin server is a great feature. Any updates on this? \n \n \n\n\n;05/May/22 17:19;githubbot;600", "Log Work__2": "li4wang commented on PR #1044:\nURL: https://github.com/apache/zookeeper/pull/1044#issuecomment-1124394578\n\n @maoling \n This is great work. Looking into the PR, it looks like the snapshot is generated from the in-memory data tree. Without backing up the transaction logs, there will be data loss or data integrity issue in the disastrous failure case (i.e.more than (N-1)/2 members are lost), right?\n \n \n\n\n;12/May/22 00:00;githubbot;600", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 1800, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 1800, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-3318", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-08-08 06:43:24.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z05gc8:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Create a Maven module for Metrics Providers API", "Issue key": "ZOOKEEPER-3376", "Issue id": 13231069, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "eolivelli", "Reporter": "eolivelli", "Creator": "eolivelli", "Created": "01/May/19 11:39", "Updated": "18/Aug/23 14:54", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.6.0", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "build", "Component/s__1": "metric system", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "Once we get rid of Ant build we can package the Metrics Provider APIs in a separate module.\n\nThis way Providers won't need to depend on ZooKeper Server module and we will have a better structure", "Environment": "", "Log Work": "horizonzy opened a new pull request, #2054:\nURL: https://github.com/apache/zookeeper/pull/2054\n\n Extract metrics-api module.\n\n\n;17/Aug/23 18:40;githubbot;600", "Log Work__1": "eolivelli commented on code in PR #2054:\nURL: https://github.com/apache/zookeeper/pull/2054#discussion_r1298406174\n\n\n##########\nzookeeper-metrics-providers/zookeeper-metrics-api/pom.xml:\n##########\n@@ -0,0 +1,45 @@\n+\n+\n+ \n+ 4.0.0\n+ \n+ org.apache.zookeeper\n+ zookeeper-metrics-providers\n+ 3.10.0-SNAPSHOT\n+ \n+\n+ zookeeper-metrics-api\n+ jar\n+ Apache ZooKeeper - Metrics API\n+ ZooKeeper Metrics API\n+\n+ \n+ \n+ ch.qos.logback\n+ logback-core\n\nReview Comment:\n we don't need this in an API module, this is a specific implementation of a logging framework\n\n\n\n##########\nzookeeper-metrics-providers/zookeeper-metrics-api/pom.xml:\n##########\n@@ -0,0 +1,45 @@\n+\n+\n+ \n+ 4.0.0\n+ \n+ org.apache.zookeeper\n+ zookeeper-metrics-providers\n+ 3.10.0-SNAPSHOT\n+ \n+\n+ zookeeper-metrics-api\n+ jar\n+ Apache ZooKeeper - Metrics API\n+ ZooKeeper Metrics API\n+\n+ \n+ \n+ ch.qos.logback\n+ logback-core\n+ \n+ \n+ ch.qos.logback\n+ logback-classic\n\nReview Comment:\n we don't need this in an API module, this is a specific implementation of a logging framework\n\n\n\n;18/Aug/23 12:41;githubbot;600", "Log Work__2": "horizonzy commented on code in PR #2054:\nURL: https://github.com/apache/zookeeper/pull/2054#discussion_r1298548086\n\n\n##########\nzookeeper-metrics-providers/zookeeper-metrics-api/pom.xml:\n##########\n@@ -0,0 +1,45 @@\n+\n+\n+ \n+ 4.0.0\n+ \n+ org.apache.zookeeper\n+ zookeeper-metrics-providers\n+ 3.10.0-SNAPSHOT\n+ \n+\n+ zookeeper-metrics-api\n+ jar\n+ Apache ZooKeeper - Metrics API\n+ ZooKeeper Metrics API\n+\n+ \n+ \n+ ch.qos.logback\n+ logback-core\n+ \n+ \n+ ch.qos.logback\n+ logback-classic\n\nReview Comment:\n Addressed, the PromethuesProvider will use RateLogger, So move RateLogger from `zookeeper-server` to `metrics-api`. In RateLogger, it will use Logger, so we need slf4j-api dependency.\n\n\n\n;18/Aug/23 14:54;githubbot;600", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 1800, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 1800, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-05-01 11:39:12.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z02aww:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "[CLI way]Add a complete backup mechanism for zookeeper internal", "Issue key": "ZOOKEEPER-3318", "Issue id": 13222060, "Parent id": "", "Issue Type": "New Feature", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "16/Mar/19 07:10", "Updated": "12/May/22 00:26", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "other", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 1, "Labels": "pull-request-available", "Labels__1": "", "Description": "We already had some workaround ways for the backup, e.g:\nscenario 1: just write a cron shell to copy the snapshots periodically. \nscenario 2: use the observer as the role of backup, then write the snapshots to distributed file system. (e.g HDFS)\n\nthis issue is aiming to implement a complete backup mechanism for zookeeper internal:\nthe init propose:\n1. for realtime backup.\nwrite a new CLI:snapshot\n1.1\n[zk: 127.0.0.1:2180(CONNECTED) 0] snapshot backupDataDir\n[zk: 127.0.0.1:2180(CONNECTED) 1] snapshot\n ***************************************************************************************************************\n1.2 \nif no parameter, the default backupDataDir is the dataDir. the format of the backup-snapshot is just like: snapshot.f9f800002834 which is the same as the original one.\nwhen recovering,moving the snapshot.f9f800002834 to the dataDir, then restart the ensemble.\n1.3\ndon't worry about exposing the takeSnap() api to the client.Look at this two references:\nhttps://github.com/etcd-io/etcd/blob/master/clientv3/snapshot/v3_snapshot.go\nhttps://github.com/xetorthio/jedis/blob/master/src/main/java/redis/clients/jedis/commands/BasicCommands.java#L68\n2. for no-realtime backup.\n2.1 \nwrite a new tool/shell: zkBackup.sh which is the reverse proces of the zkCleanup.sh for no-realtime backup.", "Environment": "", "Log Work": "maoling commented on pull request #917: ZOOKEEPER-3318:-[WIP]-Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/917\n \n \n - this is still a work in the progress,Plz don't review before removing the WIP tag.\n - more details in [ZOOKEEPER-3318](https://issues.apache.org/jira/browse/ZOOKEEPER-3318) \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;22/Apr/19 11:46;githubbot;600", "Log Work__1": "maoling commented on pull request #917: ZOOKEEPER-3318:-[WIP]-Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/917\n \n \n \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;12/May/19 10:40;githubbot;600", "Log Work__2": "maoling commented on pull request #917: ZOOKEEPER-3318:-[WIP]-Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/917\n \n \n - this is still a work in the progress,Plz don't review before removing the WIP tag.\n - more details in [ZOOKEEPER-3318](https://issues.apache.org/jira/browse/ZOOKEEPER-3318) \n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;12/May/19 10:40;githubbot;600", "Log Work__3": "enixon commented on issue #917: ZOOKEEPER-3318:Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/917#issuecomment-491919486\n \n \n Directed snapshots seem useful to me; I have reservations about snapshot taking being triggered by the ZooKeeper client. If it's just a way to freeze the FinalRequestProcessor and take a synchronous snapshot then is there a way to achieve that while using the admin server or jmx as the entry point?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;13/May/19 17:44;githubbot;600", "Log Work__4": "maoling commented on issue #917: ZOOKEEPER-3318:Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/917#issuecomment-502370394\n \n \n Let me take a close look at the [PR-180](https://github.com/apache/zookeeper/pull/180),After that,I will answer all the concerns together.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;15/Jun/19 14:14;githubbot;600", "Log Work__5": "maoling commented on issue #917: ZOOKEEPER-3318:[CLI way]Add a complete backup mechanism for zookeeper internal\nURL: https://github.com/apache/zookeeper/pull/917#issuecomment-519421657\n \n \n > If it's just a way to freeze the FinalRequestProcessor and take a synchronous snapshot ?\n \n @enixon \n - A good insight. we can do the following in the `FinalRequestProcessor`.\n ```\n case OpCode.takeSnapshot: {\n ------------------------------------------------------\n // new ZooKeeperThread(\"Client Snapshot Thread\") {\n // public void run() {\n // try {\n // zks.takeSnapshotExternal(dir);\n // } catch (IOException e) {\n // }\n // }\n // }.start();\n ```\n - the really headache is the security issue to implement it with CLI:\n \n > Since this PR is targeting master I suggest considering the option of adding a snap API to ZooKeeperAdmin, which is recently introduced to harden security around dynamic reconfiguration. ZooKeeperAdmin supports all sorts of authentications built in ZK and we can extend it such that only admin (or any users that explicitly being granted admin access to cluster) can issue snap command.\n \n @hanm `ZooKeeperAdmin` currently may not support the authentications issue.I see the authentications of the CLI:`reconfig` is dependent on the write permission on the node `/zookeeper/config`\n - Overall, let us do this with [admin server ](https://github.com/apache/zookeeper/pull/1044)firstly.\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;08/Aug/19 08:26;githubbot;600", "Log Work__6": "li4wang commented on PR #917:\nURL: https://github.com/apache/zookeeper/pull/917#issuecomment-1124405948\n\n @maoling @enixon I have similar thoughts. It's a great idea of triggering backup using admin server as the entry point. However, taking a snapshot from in-memory data tree without backing up transaction logs seems not sufficient, as the snapshot is fuzzy and may not represent the state of the data tree at any point of time. We may have data loss or data integrity issue in the quorum lost case if the transaction logs are not backed up.\n \n I wonder if there are any thoughts or discussions on providing a complete backup solution without the risk of losing data?\n \n > Directed snapshots seem useful to me; I have reservations about snapshot taking being triggered by the ZooKeeper client. If it's just a way to freeze the FinalRequestProcessor and take a synchronous snapshot then is there a way to achieve that while using the admin server or jmx as the entry point?\n \n \n\n\n;12/May/22 00:26;githubbot;600", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 4200, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 4200, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "ZOOKEEPER-3499", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Mar 28 23:54:16 UTC 2019", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|z00ruw:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "18/Mar/19 17:51;enixon;This would be great!;;;", "Comment__1": "28/Mar/19 23:54;enixon;In the interest of a compact backup, I would like to see a way to combine a fuzzy snapshot and subsequent transaction logs into a single perfect snapshot of the data tree. One possible backup solution based on this - start up an observer process to pull the data tree live to a new directory then a subsequent operation to combine the resultant files into the perfect snapshot.;;;", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "add the new doc: zookeeperClients.md", "Issue key": "ZOOKEEPER-3283", "Issue id": 13216610, "Parent id": 13216608, "Issue Type": "Sub-task", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "19/Feb/19 11:53", "Updated": "02/Sep/19 08:12", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "documentation", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "pull-request-available", "Labels__1": "", "Description": "1.2 write Clients[2.4], which includes the: \n      1.2.1 C client \n      1.2.2 zk-python, kazoo\n      1.2.3 Curator etc.......\n      look at an example from: https://redis.io/clients", "Environment": "", "Log Work": "maoling commented on pull request #1058: ZOOKEEPER-3283:[WIP] add the new doc: zookeeperClients.md, especially the C client\nURL: https://github.com/apache/zookeeper/pull/1058\n \n \n - this is still a work in the progress,Plz don't review before removing the WIP tag.\n - more details in the [ZOOKEEPER-3283](https://issues.apache.org/jira/browse/ZOOKEEPER-3283)\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on to GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;21/Aug/19 07:55;githubbot;600", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 600, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 600, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-02-19 11:53:44.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|yi14p4:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "a big refactor for the documetations", "Issue key": "ZOOKEEPER-3282", "Issue id": 13216608, "Parent id": "", "Issue Type": "Task", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "maoling", "Reporter": "maoling", "Creator": "maoling", "Created": "19/Feb/19 11:50", "Updated": "04/Aug/19 12:48", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "documentation", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "", "Labels__1": "", "Description": "Hi guys:\n\nI'am working on doing a big refactor for the documetations.it aims to \n\n - 1.make a better reading experiences and help users know more about zookeeper quickly,as good as other projects' doc(e.g redis,hbase).\n\n - 2.have less changes to diff with the original docs as far as possible.\n\n - 3.solve the problem when we have some new features or improvements,but cannot find a good place to doc it.\n\n \n\nThe new catalog may looks kile this:\n\n* is new one added.\n\n** is the one to keep unchanged as far as possible.\n\n*** is the one modified.\n\n--------------------------------------------------------------\n\n|---Overview\n\n    |---Welcome ** [1.1]\n\n    |---Overview ** [1.2]\n\n    |---Getting Started ** [1.3]\n\n    |---Release Notes ** [1.4]\n\n|---Developer\n\n    |---API *** [2.1]\n\n    |---Programmer's Guide ** [2.2]\n\n    |---Recipes *** [2.3]\n\n    |---Clients * [2.4]\n\n    |---Use Cases * [2.5]\n\n|---Admin & Ops\n\n    |---Administrator's Guide ** [3.1]\n\n    |---Quota Guide ** [3.2]\n\n    |---JMX ** [3.3]\n\n    |---Observers Guide ** [3.4]\n\n    |---Dynamic Reconfiguration ** [3.5]\n\n    |---Zookeeper CLI * [3.6]\n\n    |---Shell * [3.7]\n\n    |---Configuration flags * [3.8]\n\n    |---Troubleshooting & Tuning  * [3.9]\n\n|---Contributor Guidelines\n\n    |---General Guidelines * [4.1]\n\n    |---ZooKeeper Internals ** [4.2]\n\n|---Miscellaneous\n\n    |---Wiki ** [5.1]\n\n    |---Mailing Lists ** [5.2]\n\n--------------------------------------------------------------\n\n\n\n\n\n\n\n\n\n\nThe Roadmap is:\n\n1.(I pick up it : D)\n\n  1.1 write API[2.1], which includes the: \n\n    1.1.1  original API Docs which is a Auto-generated java doc,just give a link.\n\n    1.1.2. Restful-api (the apis under the /zookeeper-contrib-rest/src/main/java/org/apache/zookeeper/server/jersey/resources)\n\n  1.2 write Clients[2.4], which includes the: \n\n      1.2.1 C client \n\n      1.2.2 zk-python, kazoo\n\n      1.2.3 Curator etc.......\n\n      look at an example from: https://redis.io/clients\n\n\n\n\n # write Recipes[2.3], which includes the:\n\n  - integrate \"Java Example\" and \"Barrier and Queue Tutorial\"(Since some bugs in the examples and they are obsolete,we may delete something) into it.\n\n  - suggest users to use the recipes implements of Curator and link to the Curator's recipes doc.\n\n \n # write Zookeeper CLI[3.6], which includes the:\n\n  - about how to use the zk command line interface [./zkCli.sh]\n\n    e.g ls /; get ; rmr;create -e -p etc.......\n\n  - look at an example from redis: https://redis.io/topics/rediscli\n\n \n # write shell[3.7], which includes the:\n\n   - list all usages of the shells under the zookeeper/bin. (e.g zkTxnLogToolkit.sh,zkCleanup.sh)\n\n \n # write Configuration flags[3.8], which includes the:\n\n   - list all usages of configurations properties(e.g zookeeper.snapCount): \n\n   - move the original Advanced Configuration part of zookeeperAdmin.md into it.\n\n     look at an example from:https://coreos.com/etcd/docs/latest/op-guide/configuration.html\n\n   \n # write Troubleshooting & Tuning[3.9], which includes the:\n\n   - move the original \"Gotchas: Common Problems and Troubleshooting\" part of Administrator's Guide.md into it.\n\n   - move the original \"FAQ\" into into it.\n\n   - add some new contents (e.g https://www.yumpu.com/en/document/read/29574266/building-an-impenetrable-zookeeper-pdf-github).\n\n   look at an example from:https://redis.io/topics/problems\n\n                             https://coreos.com/etcd/docs/latest/tuning.html\n\n \n # write General Guidelines[4.1], which includes the:\n\n  - move the original \"Logging\" part of ZooKeeper Internals into it as the logger specification.\n\n  - write specifications about code, git commit messages,github PR  etc ...\n\n    look at an example from:\n\n    http://hbase.apache.org/book.html#hbase.commit.msg.format\n\n \n # write Use Cases[2.5], which includes the:\n\n  - just move the context from: https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy into it.\n\n  - add some new contents.(e.g Apache Projects:Spark;Companies:twitter,fb)\n\n \n\n--------------------------------------------------------------\n\nBTW:\n\n- Any insights or suggestions are very welcomed.After the dicussions,I will create a series of tickets(An umbrella)\n\n- Since these works can be done parallelly, if you are interested in them, please don't hesitate,just assign to yourself, pick it up. (Notice: give me a ping to avoid the duplicated work).", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 24600, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "ZOOKEEPER-3259", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2019-02-19 11:50:32.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|yi14oo:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Umbrella for eliminating ZooKeeper flaky tests", "Issue key": "ZOOKEEPER-3170", "Issue id": 13191544, "Parent id": "", "Issue Type": "Test", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "andor", "Reporter": "andor", "Creator": "andor", "Created": "15/Oct/18 10:17", "Updated": "16/Mar/21 06:47", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "tests", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "", "Labels__1": "", "Description": "Umbrella ticket for joint community efforts to reduce number of flaky tests and improve the stability of our Jenkins builds.\n\nFlaky test reports can be found at https://ci-hadoop.apache.org/view/ZooKeeper/job/ZooKeeper-Find-Flaky-Tests/lastSuccessfulBuild/artifact/report.html", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 92400, "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Fri Oct 19 16:31:25 UTC 2018", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i3z6v3:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "19/Oct/18 16:31;lvfangmin;Thanks [~andor] for tracking all those flaky tests, I'll pick up some of them to work on.;;;", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "zh->state should not be 0 while handle is active", "Issue key": "ZOOKEEPER-2519", "Issue id": 12998876, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "agrasso", "Reporter": "agrasso", "Creator": "agrasso", "Created": "22/Aug/16 12:45", "Updated": "22/Sep/16 18:36", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.4.6", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "c client", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "", "Labels__1": "", "Description": "0 does not correspond to any of the defined states for the zookeeper handle, so a client should not expect to see this value. But in the function {{handle_error}}, we set {{zh->state = 0}}, which a client may then see. Instead, we should set our state to be {{ZOO_CONNECTING_STATE}}. \n\nAt some point the code moved away from 0 as a valid state and introduced the defined states. This broke the fix to ZOOKEEPER-800, which checks if state is 0 to know if the handle has been created but has not yet connected. We now use {{ZOO_NOTCONNECTED_STATE}} to mean this, so the check for this in {{zoo_add_auth}} must be changed.\n\nWe saw this error in 3.4.6, but I believe it remains present in trunk.", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "29/Aug/16 12:46;agrasso;ZOOKEEPER-2519.patch;https://issues.apache.org/jira/secure/attachment/12825998/ZOOKEEPER-2519.patch", "Attachment__1": "22/Aug/16 12:58;agrasso;ZOOKEEPER-2519.patch;https://issues.apache.org/jira/secure/attachment/12824835/ZOOKEEPER-2519.patch", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 2, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 9223372036854776000, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Sep 22 18:24:45 UTC 2016", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i32l9j:", "Custom field (Rank (Obsolete))": 9223372036854776000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "26/Aug/16 22:53;hanm;The patch looks like malformatted, can't be applied to branch-3.4. [Reference on generating patch|https://cwiki.apache.org/confluence/display/ZOOKEEPER/HowToContribute]\n\n{code}\n zh->fd = -1;\n zh->connect_index++;\n if (!is_unrecoverable(zh)) {\n -| zh->state = 0;\n+| zh->state = ZOO_CONNECTING_STATE;\n }\n if (process_async(zh->outstanding_sync)) {\n process_completions(zh);\n }\n{code}\n\nInstead of using {{ZOO_CONNECTING_STATE}}, why not using {{ZOO_NOTCONNECTED_STATE}}, given the reconnect attempt hasn't been made at this point yet? Later, in zookeeper_interest when reconnecting attempt being made the state will be set to {{ZOO_CONNECTING_STATE}}.\n;;;", "Comment__1": "29/Aug/16 12:46;agrasso;Thanks for the feedback Michael. The new patch should apply cleanly to 3.4.6.\n\nI had chosen ZOO_CONNECTING_STATE because I misunderstood what ZOO_NOTCONNECTED_STATE means. I thought we had used it to replace 0, and that both meant we had not begun connecting. I now think that 0 was used to mean either that we had not begun connecting or that we had closed permanently. So the ZOOKEEPER-800 fix had initially returned invalid state in either case, but I believe as of 3.4.6 it was behaving correctly. Given that, I now agree that ZOO_NOTCONNECTED_STATE makes more sense here, and I've dropped the change to zoo_add_auth;;;", "Comment__2": "29/Aug/16 23:42;hanm;Thanks for the update Andrew. Latest patch LGTM.;;;", "Comment__3": "22/Sep/16 18:24;hadoopqa;-1 overall. Here are the results of testing the latest attachment \n http://issues.apache.org/jira/secure/attachment/12825998/ZOOKEEPER-2519.patch\n against trunk revision ec20c5434cc8a334b3fd25e27d26dccf4793c8f3.\n\n +1 @author. The patch does not contain any @author tags.\n\n -1 tests included. The patch doesn't appear to include any new or modified tests.\n Please justify why no new tests are needed for this patch.\n Also please list what manual steps were performed to verify this patch.\n\n -1 patch. The patch command could not apply the patch.\n\nConsole output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/3448//console\n\nThis message is automatically generated.;;;", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Append to zookeeper.out (not overwrite) to support logrotation", "Issue key": "ZOOKEEPER-1983", "Issue id": 12728973, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "shyamal", "Reporter": "shyamal", "Creator": "shyamal", "Created": "22/Jul/14 21:18", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.3.5", "Affects Version/s__1": "3.3.6", "Affects Version/s__2": "3.4.6", "Component/s": "server", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 1, "Labels": "", "Labels__1": "", "Description": "Currently zkServer.sh will redirect output to zookeeper.out using a simple shell redirect. \n\nWhen logrotate (and similar tools) are used to rotate the zookeeper.out file with the 'copytruncate' semantics (copy the file, truncate it to zero bytes) the next write results in a sparse file with the write at the offset of the last file. Effectively the log file is now full a null bytes and it is hard to read/use the file (and the rotated copies). \n\nEven worse, the result is zookeeper.out file only gets \"larger\" (though sparse) and after a while on a chatty system it takes significant CPU resources to compress the file (which is all nulls!)\n\nThe simple fix is to append to the file (>>) instead of a simple redirection (>)\n\nThis issue was found in a 3.3.5 production system, however code in trunk has the same issue.", "Environment": "CentOS 5.x (and probably any Linux distribution for that matter)", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "22/Jul/14 21:24;shyamal;ZK1983.patch;https://issues.apache.org/jira/secure/attachment/12657189/ZK1983.patch", "Attachment__1": "23/Jul/14 19:19;shyamal;ZOOKEEPER-1983.patch;https://issues.apache.org/jira/secure/attachment/12657421/ZOOKEEPER-1983.patch", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 2, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 407047, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Tue Apr 21 10:12:52 UTC 2015", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i1y1mn:", "Custom field (Rank (Obsolete))": 407065, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "22/Jul/14 21:24;shyamal;Simple patch (to trunk) demonstrating a fix that works at my site (which is currently running 3.3.5);;;", "Comment__1": "23/Jul/14 17:41;phunt;Hi [~shyamal] - I'm assuming the patch is ready? Click the \"submit patch\" button if so, that way the workflow will move forward. Thanks! \n\nAlso see https://cwiki.apache.org/confluence/display/ZOOKEEPER/HowToContribute;;;", "Comment__2": "23/Jul/14 18:31;hadoopqa;-1 overall. Here are the results of testing the latest attachment \n http://issues.apache.org/jira/secure/attachment/12657189/ZK1983.patch\n against trunk revision 1612906.\n\n +1 @author. The patch does not contain any @author tags.\n\n -1 tests included. The patch doesn't appear to include any new or modified tests.\n Please justify why no new tests are needed for this patch.\n Also please list what manual steps were performed to verify this patch.\n\n -1 patch. The patch command could not apply the patch.\n\nConsole output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/2220//console\n\nThis message is automatically generated.;;;", "Comment__3": "23/Jul/14 19:08;phunt;Hi Shyamal, when using git you need to use the \"--no-prefix\" option when generating the patch (see the how to contribute page for more details), otherwise std \"patch\" will fail to apply. Please attach an updated patch and re-submit. Thanks!;;;", "Comment__4": "23/Jul/14 19:19;shyamal;git diff --no-prefix from a git svn clone of subversion trunk;;;", "Comment__5": "23/Jul/14 19:22;shyamal;Thanks for the link - I'm guilty of not reading the documents regarding contributions. I've uploaded a properly formatted patch.;;;", "Comment__6": "23/Jul/14 19:26;shyamal;Patch formatted per contribution guidelines.;;;", "Comment__7": "23/Jul/14 19:30;shyamal;Re-uploaded properly formatted patch.;;;", "Comment__8": "23/Jul/14 19:56;phunt;No problem. You want to use the \"submit\" button though, not the progress one...;;;", "Comment__9": "23/Jul/14 20:59;hadoopqa;-1 overall. Here are the results of testing the latest attachment \n http://issues.apache.org/jira/secure/attachment/12657421/ZOOKEEPER-1983.patch\n against trunk revision 1612906.\n\n +1 @author. The patch does not contain any @author tags.\n\n -1 tests included. The patch doesn't appear to include any new or modified tests.\n Please justify why no new tests are needed for this patch.\n Also please list what manual steps were performed to verify this patch.\n\n +1 javadoc. The javadoc tool did not generate any warning messages.\n\n +1 javac. The applied patch does not increase the total number of javac compiler warnings.\n\n +1 findbugs. The patch does not introduce any new Findbugs (version 2.0.3) warnings.\n\n +1 release audit. The applied patch does not increase the total number of release audit warnings.\n\n -1 core tests. The patch failed core unit tests.\n\n +1 contrib tests. The patch passed contrib unit tests.\n\nTest results: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/2221//testReport/\nFindbugs warnings: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/2221//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html\nConsole output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-Build/2221//console\n\nThis message is automatically generated.;;;", "Comment__10": "23/Jul/14 21:23;shyamal;Patrick, apologies for the newbie issues, and thanks for the pointers.\n\nThe reported build failure (for NioNettySuiteHammerTest) seems to be unrelated and afaict it's been failing for two weeks or so, (r1609730).\n\nRegarding the missing updates for a test case: it's not obvious that it is valuable to add one. I did find src/java/test/bin/test-scripts.sh which might allow me to add a (somewhat convoluted) test to verify that we do not clobber an existing file on startup. I'm not sure if that is the policy for script updates; advice appreciated.;;;", "Comment__11": "23/Jul/14 21:28;phunt;testHammer is failing because of an environmental issue, I'm working with infra to resolve it. No need for a test case I would think.;;;", "Comment__12": "27/Jan/15 08:08;rakeshr;Thanks [~shyamal], patch looks fine. Just one thought, with append support the out file will keep grow. One way is to provide an option of {{MaxFileSize}} threshold and then rollover based on that, right ? Also, welcome better ideas.;;;", "Comment__13": "28/Jan/15 03:15;shyamal;[~rakeshr], my opinion is to leave the file size management to OS specific tools (like logrotate) which can apply the policy a sysadmin desired. I don't believe that any attempt to manage log rotation of stdout redirected from this script will add much value (even if it can coded in a useful manner). ;;;", "Comment__14": "04/Feb/15 12:10;rakeshr;ok. I got your point. It looks simple, but I'd like to see +1 or comments from others as well. Based on that will push this in.;;;", "Comment__15": "21/Apr/15 10:12;nijel;hi\nCan we think of out file rotation ? say we will keep last 5 or 10 out files.\nThe rolling will happen on each restart.;;;" }, { "Summary": "StaticHostProvider loses IPv6 scope ID when resolving server addresses", "Issue key": "ZOOKEEPER-1954", "Issue id": 12725375, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "", "Reporter": "bhavanki", "Creator": "bhavanki", "Created": "03/Jul/14 20:45", "Updated": "18/Jun/15 12:58", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.4.6", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "java client", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 2, "Labels": "", "Labels__1": "", "Description": "I have been getting constant failures of the {{ClientPortBindTest}} unit test (see ZOOKEEPER-1256) on my Macbook. I traced the problem to loss of the IPv6 scope ID on the address chosen for the loopback address in the unit test.\n\nThe address chosen is: fe80:0:0:0:0:0:0:1%1. The scope ID here is 1, after the percent sign.\n\nThe scope ID is lost in the {{resolveAndShuffle()}} method of {{StaticHostProvider}}. The method uses {{InetAddress.getByAddress()}} which apparently does not preserve the scope ID in the host string it is passed. {{Inet6Address.getByAddress()}} can, although you have to parse the scope ID out of the host string yourself and pass it as its own parameter.", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "ZOOKEEPER-1256", "Outward issue link (Reference)__1": "ZOOKEEPER-1476", "Attachment": "07/Jul/14 15:08;bhavanki;ZOOKEEPER-1954.patch;https://issues.apache.org/jira/secure/attachment/12654329/ZOOKEEPER-1954.patch", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 1, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "Patch", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 403535, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Thu Jun 18 12:58:18 UTC 2015", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i1xgaf:", "Custom field (Rank (Obsolete))": 403579, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "07/Jul/14 15:09;bhavanki;Patch available for review.;;;", "Comment__1": "18/Jun/15 08:06;sslavic;[~bhavanki] consider removing yourself as assignee and setting issue status to todo instead of in progress.\nI've turned on flag in JIRA that the issue has a patch.\n\nI'm guessing it may help ZooKeeper committers find issues which are pending to be done, and have patches. Now they may think issue is being actively worked on by someone.;;;", "Comment__2": "18/Jun/15 12:58;bhavanki;Thanks for the reminder. I've unassigned myself but can't seem to change the status.;;;", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Clean up raw type compile warnings under Java 7", "Issue key": "ZOOKEEPER-1951", "Issue id": 12724757, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Trivial", "Resolution": "", "Assignee": "", "Reporter": "bhavanki", "Creator": "bhavanki", "Created": "01/Jul/14 15:57", "Updated": "18/Jun/15 12:58", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "3.4.6", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "generics", "Labels__1": "java7", "Description": "Compiling with Java 1.7.0_60 under Mac OS X 10.9.3, I get five warnings about raw types being found. (Compiler warnings are attached.) These can probably be cleaned up pretty easily.\n\nThe warnings were observed in ZOOKEEPER-1477.", "Environment": "", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "01/Jul/14 18:40;bhavanki;ZOOKEEPER-1951.v1.patch;https://issues.apache.org/jira/secure/attachment/12653440/ZOOKEEPER-1951.v1.patch", "Attachment__1": "01/Jul/14 15:59;bhavanki;rawtypewarnings.txt;https://issues.apache.org/jira/secure/attachment/12653410/rawtypewarnings.txt", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 2, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 402940, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Tue Jul 01 18:42:26 UTC 2014", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i1xcpj:", "Custom field (Rank (Obsolete))": 403000, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "01/Jul/14 18:42;bhavanki;Patch available for review.;;;", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Use $(ProjectDir) macro to specify include directories", "Issue key": "ZOOKEEPER-1915", "Issue id": 12709426, "Parent id": "", "Issue Type": "Improvement", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Minor", "Resolution": "", "Assignee": "michim", "Reporter": "michim", "Creator": "michim", "Created": "19/Apr/14 23:55", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "c client", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 0, "Labels": "", "Labels__1": "", "Description": "Right now we need to explicitly set the ZOOKEEPER_HOME environment variable.", "Environment": "windows visual c++ 2008", "Log Work": "", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": "", "Time Spent": "", "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": "", "Σ Time Spent": "", "Security Level": "", "Outward issue link (Blocker)": "", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "19/Apr/14 23:59;michim;ZOOKEEPER-1915.patch;https://issues.apache.org/jira/secure/attachment/12640967/ZOOKEEPER-1915.patch", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 1, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 387748, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "2014-04-19 23:55:00.0", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i1usnj:", "Custom field (Rank (Obsolete))": 388009, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "", "Comment__1": "", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" }, { "Summary": "Errors that happen during sync() processing at the leader do not get propagated back to the client.", "Issue key": "ZOOKEEPER-915", "Issue id": 12478629, "Parent id": "", "Issue Type": "Bug", "Status": "In Progress", "Project key": "ZOOKEEPER", "Project name": "ZooKeeper", "Project type": "software", "Project lead": "phunt", "Project description": "Apache ZooKeeper is a service for coordinating processes of distributed applications.", "Project url": "http://zookeeper.apache.org", "Priority": "Major", "Resolution": "", "Assignee": "gaoshu", "Reporter": "breed", "Creator": "breed", "Created": "28/Oct/10 22:43", "Updated": "15/Jun/23 21:09", "Last Viewed": "12/Mar/24 11:56", "Resolved": "", "Affects Version/s": "", "Affects Version/s__1": "", "Affects Version/s__2": "", "Component/s": "", "Component/s__1": "", "Component/s__2": "", "Due Date": "", "Votes": 1, "Labels": "pull-request-available", "Labels__1": "", "Description": "If an error in sync() processing happens at the leader (SESSION_MOVED for example), they are not propagated back to the client.", "Environment": "", "Log Work": "anmolnar commented on issue #351: ZOOKEEPER-915: Error get propagated back to the client\nURL: https://github.com/apache/zookeeper/pull/351#issuecomment-459524516\n \n \n @bitgaoshu @breed \n This one looks like an important fix to me, unfortunately abandoned a while ago. Do you thing it's still relevant?\n \n----------------------------------------------------------------\nThis is an automated message from the Apache Git Service.\nTo respond to the message, please log on GitHub and use the\nURL above to go to the specific comment.\n \nFor queries about this service, please contact Infrastructure at:\nusers@infra.apache.org\n;31/Jan/19 22:06;githubbot;600", "Log Work__1": "", "Log Work__2": "", "Log Work__3": "", "Log Work__4": "", "Log Work__5": "", "Log Work__6": "", "Log Work__7": "", "Log Work__8": "", "Log Work__9": "", "Log Work__10": "", "Log Work__11": "", "Log Work__12": "", "Log Work__13": "", "Log Work__14": "", "Log Work__15": "", "Log Work__16": "", "Log Work__17": "", "Log Work__18": "", "Log Work__19": "", "Original Estimate": "", "Remaining Estimate": 0, "Time Spent": 600, "Work Ratio": "", "Σ Original Estimate": "", "Σ Remaining Estimate": 0, "Σ Time Spent": 600, "Security Level": "", "Outward issue link (Blocker)": "ZOOKEEPER-907", "Inward issue link (Reference)": "", "Inward issue link (Reference)__1": "", "Outward issue link (Reference)": "", "Outward issue link (Reference)__1": "", "Attachment": "", "Attachment__1": "", "Custom field (Affects version (Component))": "", "Custom field (Attachment count)": 0, "Custom field (Blog - New Blog Administrators)": "", "Custom field (Blog - New Blog PMC)": "", "Custom field (Blog - Write access)": "", "Custom field (Blog Administrator?)": "", "Custom field (Blogs - Admin for blog)": "", "Custom field (Blogs - Email Address)": "", "Custom field (Blogs - Existing Blog Access Level)": "", "Custom field (Blogs - Existing Blog Name)": "", "Custom field (Blogs - New Blog Write Access)": "", "Custom field (Blogs - Username)": "", "Custom field (Bug Category)": "", "Custom field (Bugzilla - Email Notification Address)": "", "Custom field (Bugzilla - List of usernames)": "", "Custom field (Bugzilla - PMC Name)": "", "Custom field (Bugzilla - Project Name)": "", "Custom field (Bugzilla Id)": "", "Custom field (Bugzilla Id)__1": "", "Custom field (Change Category)": "", "Custom field (Complexity)": "", "Custom field (Discovered By)": "", "Custom field (Docs Text)": "", "Custom field (Enable Automatic Patch Review)": false, "Custom field (Epic Colour)": "", "Custom field (Epic Link)": "", "Custom field (Epic Name)": "", "Custom field (Epic Status)": "", "Custom field (Estimated Complexity)": "", "Custom field (Evidence Of Open Source Adoption)": "", "Custom field (Evidence Of Registration)": "", "Custom field (Evidence Of Use On World Wide Web)": "", "Custom field (Existing GitBox Approval)": "", "Custom field (External issue ID)": "", "Custom field (External issue URL)": "", "Custom field (Fix version (Component))": "", "Custom field (Flags)": "", "Custom field (Git Notification Mailing List)": "", "Custom field (Git Repository Import Path)": "", "Custom field (Git Repository Name)": "", "Custom field (Git Repository Type)": "", "Custom field (GitHub Options)": "", "Custom field (Github Integration)": "", "Custom field (Github Integrations - Other)": "", "Custom field (Global Rank)": 36650, "Custom field (INFRA - Subversion Repository Path)": "", "Custom field (Initial Confluence Contributors)": "", "Custom field (Last public comment date)": "Wed Aug 30 06:36:16 UTC 2017", "Custom field (Level of effort)": "", "Custom field (Machine Readable Info)": "", "Custom field (Mentor)": "", "Custom field (New-TLP-TLPName)": "", "Custom field (Original story points)": "", "Custom field (Parent Link)": "", "Custom field (Priority)": "", "Custom field (Project)": "", "Custom field (Protected Branch)": "", "Custom field (Rank)": "0|i05z9r:", "Custom field (Rank (Obsolete))": 32813, "Custom field (Release Note)": "", "Custom field (Review Date)": "", "Custom field (Reviewer)": "", "Custom field (Severity)": "", "Custom field (Severity)__1": "", "Custom field (Skill Level)": "", "Custom field (Source Control Link)": "", "Custom field (Space Description)": "", "Custom field (Space Key)": "", "Custom field (Space Name)": "", "Custom field (Start Date)": "", "Custom field (Tags)": "", "Custom field (Tags)__1": "", "Custom field (Target end)": "", "Custom field (Target start)": "", "Custom field (Team)": "", "Custom field (Test and Documentation Plan)": "", "Custom field (Testcase included)": "", "Custom field (Tester)": "", "Custom field (Workaround)": "", "Comment": "30/Aug/17 06:16;githubbot;GitHub user bitgaoshu opened a pull request:\n\n https://github.com/apache/zookeeper/pull/351\n\n ZOOKEEPER-915: Error get propagated back to the client\n\n If an error in sync() processing happens at the leader (SESSION_MOVED for example), they are not propagated back to the client. And use QuorumPacket::Zxid indicates the exception happens or not.\n\nYou can merge this pull request into a Git repository by running:\n\n $ git pull https://github.com/bitgaoshu/zookeeper ZOOKEEPER-915\n\nAlternatively you can review and apply these changes as the patch at:\n\n https://github.com/apache/zookeeper/pull/351.patch\n\nTo close this pull request, make a commit to your master/trunk branch\nwith (at least) the following in the commit message:\n\n This closes #351\n \n----\ncommit c4170cbe16cbccc9f6f5292528b6fd7650bfa32b\nAuthor: bitgaoshu \nDate: 2017-08-30T03:17:41Z\n\n ZOOKEEPER-915: Errors that happen during sync() processing at the leader get propagated back to the client.\n\n----\n;;;", "Comment__1": "30/Aug/17 06:36;hadoopqa;+1 overall. GitHub Pull Request Build\n \n\n +1 @author. The patch does not contain any @author tags.\n\n +0 tests included. The patch appears to be a documentation patch that doesn't require tests.\n\n +1 javadoc. The javadoc tool did not generate any warning messages.\n\n +1 javac. The applied patch does not increase the total number of javac compiler warnings.\n\n +1 findbugs. The patch does not introduce any new Findbugs (version 3.0.1) warnings.\n\n +1 release audit. The applied patch does not increase the total number of release audit warnings.\n\n +1 core tests. The patch passed core unit tests.\n\n +1 contrib tests. The patch passed contrib unit tests.\n\nTest results: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/980//testReport/\nFindbugs warnings: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/980//artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html\nConsole output: https://builds.apache.org/job/PreCommit-ZOOKEEPER-github-pr-build/980//console\n\nThis message is automatically generated.;;;", "Comment__2": "", "Comment__3": "", "Comment__4": "", "Comment__5": "", "Comment__6": "", "Comment__7": "", "Comment__8": "", "Comment__9": "", "Comment__10": "", "Comment__11": "", "Comment__12": "", "Comment__13": "", "Comment__14": "", "Comment__15": "" } ]