curie71 opened a new pull request, #1962:
URL: https://github.com/apache/zookeeper/pull/1962

   ZOOKEEPER-4648 FinalRequestProcessor addAuditLog before the process of 
request and make failedTxn=false. But I think failedTxn should be true if the 
request can not pass the checkACL and throw KeeperException or other 
exceptions, **since the err code after request processing is also important for 
audit.**
   ```java
   @param failedTxn whether audit is being done failed transaction for normal 
transaction
   
   public void processRequest(Request request) {
           ......
           Code err = Code.OK;
           try {
               ......
               AuditHelper.addAuditLog(request, rc);
   
               switch (request.type) {
               ......
               case OpCode.getAllChildrenNumber: {
                   lastOp = "GETACN";
                   ......
                   zks.checkACL(
                       request.cnxn,
                       zks.getZKDatabase().aclForNode(n),
                       ZooDefs.Perms.READ,
                       request.authInfo,
                       path,
                       null);
                   ......
                   break;
               }
               ......
               }
           } catch (SessionMovedException e) {
               ......
           } catch (KeeperException e) {
               err = e.code();
           } catch (Exception e) {
               ......
           }
   ```
   if the failedTxn == true or the rc.err != Code.OK, the log result will be 
FAILURE: 
   ```java
       private static Result getResult(ProcessTxnResult rc, boolean failedTxn) {
           if (failedTxn) {
               return Result.FAILURE;
           } else {
               return rc.err == KeeperException.Code.OK.intValue() ? 
Result.SUCCESS : Result.FAILURE;
           }
       }
   ```
   So we could add audit log after request processing and record the err code 
like below, the log info maybe more accurate. 
   ```java
           Code err = Code.OK;
           try { 
                ......
           } catch (SessionMovedException e) {
               ......
           } catch (KeeperException e) {
               err = e.code();
           } catch (Exception e) {
               ......
           }
           rc.err = err.intValue();
           AuditHelper.addAuditLog(request, rc);
   ```
   


-- 
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.

To unsubscribe, e-mail: notifications-unsubscr...@zookeeper.apache.org

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

Reply via email to