You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@helix.apache.org by GitBox <gi...@apache.org> on 2021/06/01 22:46:08 UTC

[GitHub] [helix] jiajunwang opened a new pull request #1778: Get rid of non-official ZK error code to avoid NPEs.

jiajunwang opened a new pull request #1778:
URL: https://github.com/apache/helix/pull/1778


   ### Issues
   
   - [X] My PR addresses the following Helix issues and references them in the PR description:
   
   This PR will partially fix unstable tests like #1763 
   
   ### Description
   
   - [X] Here are some details about my PR, including screenshots of any UI changes:
   
   This PR removes the non-official ZK error codes that are returned in Helix ZkClient. The original design was made for differentiating the failure cases. However, that design causes unexpected NPE since most of Helix's logic relies on the Zookeeper KeeperException class to identify the error types.
   
   FYI,
   ```
   2021-05-27T13:44:01.7121680Z 1810401 [ExternalViewComputeWorker-TestClusterStatusMonitorLifecycle0_2] ERROR org.apache.helix.controller.pipeline.AbstractAsyncBaseStage  - Failed to process DEFAULT::ExternalViewComputeStage asynchronously
   2021-05-27T13:44:01.7127825Z java.lang.NullPointerException
   2021-05-27T13:44:01.7130637Z 	at org.apache.helix.manager.zk.ZkBaseDataAccessor.set(ZkBaseDataAccessor.java:912)
   2021-05-27T13:44:01.7135009Z 	at org.apache.helix.manager.zk.ZkBaseDataAccessor.setChildren(ZkBaseDataAccessor.java:856)
   2021-05-27T13:44:01.7140459Z 	at org.apache.helix.manager.zk.ZKHelixDataAccessor.setChildren(ZKHelixDataAccessor.java:578)
   2021-05-27T13:44:01.7146249Z 	at org.apache.helix.controller.stages.ExternalViewComputeStage.execute(ExternalViewComputeStage.java:134)
   2021-05-27T13:44:01.7149517Z 	at org.apache.helix.controller.pipeline.AbstractAsyncBaseStage$1.run(AbstractAsyncBaseStage.java:47)
   2021-05-27T13:44:01.7152294Z 	at org.apache.helix.controller.GenericHelixController$3.handleEvent(GenericHelixController.java:701)
   2021-05-27T13:44:01.7154919Z 	at org.apache.helix.controller.GenericHelixController$3.handleEvent(GenericHelixController.java:697)
   2021-05-27T13:44:01.7157110Z 	at org.apache.helix.common.DedupEventProcessor.run(DedupEventProcessor.java:61)
   ```
   
   One option is to change all the logic that reads KeeperException. It would cause a huge change and potentially diverge Helix from the official Zookeeper release. So it would eventually make the whole ZK error processing logics harder to maintain.
   
   Here, I proposed to convert back to the official ZK error code. Given the current processing logic does not need a different customized code to branch, I don't see any necessity of having these additional error codes.
   
   ### Tests
   
   - [X] The following tests are written for this issue:
   
   Related tests have been modified.
   
   - The following is the result of the "mvn test" command on the appropriate module:
   
   (If CI test fails due to known issue, please specify the issue and test PR locally. Then copy & paste the result of "mvn test" to here.)
   
   ### Changes that Break Backward Compatibility (Optional)
   
   - My PR contains changes that break backward compatibility or previous assumptions for certain methods or API. They include:
   
   (Consider including all behavior changes for public methods or API. Also include these changes in merge description so that other developers are aware of these changes. This allows them to make relevant code changes in feature branches accounting for the new method/API behavior.)
   
   ### Documentation (Optional)
   
   - In case of new functionality, my PR adds documentation in the following wiki page:
   
   (Link the GitHub wiki you added)
   
   ### Commits
   
   - My commits all reference appropriate Apache Helix GitHub issues in their subject lines. In addition, my commits follow the guidelines from "[How to write a good git commit message](http://chris.beams.io/posts/git-commit/)":
     1. Subject is separated from body by a blank line
     1. Subject is limited to 50 characters (not including Jira issue reference)
     1. Subject does not end with a period
     1. Subject uses the imperative mood ("add", not "adding")
     1. Body wraps at 72 characters
     1. Body explains "what" and "why", not "how"
   
   ### Code Quality
   
   - My diff has been formatted using helix-style.xml 
   (helix-style-intellij.xml if IntelliJ IDE is used)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@helix.apache.org
For additional commands, e-mail: reviews-help@helix.apache.org


[GitHub] [helix] jiajunwang commented on pull request #1778: Get rid of non-official ZK error code to avoid NPEs.

Posted by GitBox <gi...@apache.org>.
jiajunwang commented on pull request #1778:
URL: https://github.com/apache/helix/pull/1778#issuecomment-853441034


   > Handling the current use cases by swapping the custom error codes with `KeeperException.Code.APIERROR` seems a practical solution. My only concern is that perhaps with some unforeseen errors, we will get an APIERROR which is unrelated to the main cause, but for current usages that doesn't seem to be the case so this looks good to me.
   
   Thanks for the review. For the uncertain future, my thought is that we should avoid invading into the KeeperException.Code space. Note that in the newer ZK version, they are extending the error codes. If there is a conflict, then we do not have a solution.
   The right way, IMO, is add another layer of information as a supplement to the official ZK error code. I can imagine that we extend the KeeperException.Code class and add our field to it so as to indicate our detailed APIERROR. This is safer and can avoid conflict.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@helix.apache.org
For additional commands, e-mail: reviews-help@helix.apache.org


[GitHub] [helix] jiajunwang commented on pull request #1778: Get rid of non-official ZK error code to avoid NPEs.

Posted by GitBox <gi...@apache.org>.
jiajunwang commented on pull request #1778:
URL: https://github.com/apache/helix/pull/1778#issuecomment-853441034






-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@helix.apache.org
For additional commands, e-mail: reviews-help@helix.apache.org


[GitHub] [helix] jiajunwang commented on pull request #1778: Get rid of non-official ZK error code to avoid NPEs.

Posted by GitBox <gi...@apache.org>.
jiajunwang commented on pull request #1778:
URL: https://github.com/apache/helix/pull/1778#issuecomment-853441148


   Approved by @rabashizade , I will merge the PR.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@helix.apache.org
For additional commands, e-mail: reviews-help@helix.apache.org


[GitHub] [helix] jiajunwang merged pull request #1778: Get rid of non-official ZK error code to avoid NPEs.

Posted by GitBox <gi...@apache.org>.
jiajunwang merged pull request #1778:
URL: https://github.com/apache/helix/pull/1778


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@helix.apache.org
For additional commands, e-mail: reviews-help@helix.apache.org


[GitHub] [helix] jiajunwang merged pull request #1778: Get rid of non-official ZK error code to avoid NPEs.

Posted by GitBox <gi...@apache.org>.
jiajunwang merged pull request #1778:
URL: https://github.com/apache/helix/pull/1778


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@helix.apache.org
For additional commands, e-mail: reviews-help@helix.apache.org