.. Licensed to the Apache Software Foundation (ASF) under one
.. or more contributor license agreements.  See the NOTICE file
.. distributed with this work for additional information
.. regarding copyright ownership.  The ASF licenses this file
.. to you under the Apache License, Version 2.0 (the
.. "License"); you may not use this file except in compliance
.. with the License.  You may obtain a copy of the License at
..
..     http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS,
.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
.. See the License for the specific language governing permissions and
.. limitations under the License.

..  _how_to_review:

Review Checklist
****************

When reviewing tickets in Apache JIRA, the following items should be covered as part of the review process:

**General**

 * Does it conform to the :doc:`code_style` guidelines?
 * Is there any redundant or duplicate code?
 * Is the code as modular as possible?
 * Can any singletons be avoided?
 * Can any of the code be replaced with library functions?
 * Are units of measurement used in the code consistent, both internally and with the rest of the ecosystem?

**Error-Handling**

 * Are all data inputs and outputs checked (for the correct type, length, format, and range) and encoded?
 * Where third-party utilities are used, are returning errors being caught?
 * Are invalid parameter values handled?
 * Are any Throwable/Exceptions passed to the JVMStabilityInspector?
 * Are errors well-documented? Does the error message tell the user how to proceed?
 * Do exceptions propagate to the appropriate level in the code?

**Documentation**

 * Do comments exist and describe the intent of the code (the "why", not the "how")?
 * Are javadocs added where appropriate?
 * Is any unusual behavior or edge-case handling described?
 * Are data structures and units of measurement explained?
 * Is there any incomplete code? If so, should it be removed or flagged with a suitable marker like ‘TODO’?
 * Does the code self-document via clear naming, abstractions, and flow control?
 * Have NEWS.txt, the cql3 docs, and the native protocol spec been updated if needed?
 * Is the ticket tagged with "client-impacting" and "doc-impacting", where appropriate?
 * Has lib/licences been updated for third-party libs? Are they Apache License compatible?
 * Is the Component on the JIRA ticket set appropriately?

**Testing**

 * Is the code testable? i.e. don’t add too many or hide dependencies, unable to initialize objects, test frameworks can use methods etc.
 * Do tests exist and are they comprehensive?
 * Do unit tests actually test that the code is performing the intended functionality?
 * Could any test code use common functionality (e.g. ccm, dtest, or CqlTester methods) or abstract it there for reuse?
 * If the code may be affected by multi-node clusters, are there dtests?
 * If the code may take a long time to test properly, are there CVH tests?
 * Is the test passing on CI for all affected branches (up to trunk, if applicable)? Are there any regressions?
 * If patch affects read/write path, did we test for performance regressions w/multiple workloads?
 * If adding a new feature, were tests added and performed confirming it meets the expected SLA/use-case requirements for the feature?

**Logging**

 * Are logging statements logged at the correct level?
 * Are there logs in the critical path that could affect performance?
 * Is there any log that could be added to communicate status or troubleshoot potential problems in this feature?
 * Can any unnecessary logging statement be removed?

