---
title: Contribute | Post-commit guides
layout: default
---


      <!-- Marketing messaging and featurettes
      ================================================== -->
      <!-- Wrap the rest of the page in another container to center all the content. -->

      <div class="container">
        <!-- CONTRIBUTE -->
        <div class="row mb-5 mt-5 pt-3">
          <div class="col-2 sidenav-menu pt-3">
            <div class="pb-3 text-uppercase"><strong>Contribute</strong></div>
            <ul class="list-unstyled mb-3">
              <li><a href="contribute.html">Get started contributing</a></li>
              <li class="sidenav-menu-sub-title">Technical Docs</li>
              <li>
                <ul class="list-unstyled sidenav-menu-sub-list">
                  <li><a href="contribute-testing.html">Testing guide</a></li>
                  <li><a href="contribute-dependencies-guide.html">Dependencies guide</a></li>
                </ul>
              </li>
              <li class="sidenav-menu-sub-title">Policies</li>
              <li>
                <ul class="list-unstyled sidenav-menu-sub-list">
                  <li><a href="contribute-pre-commit-test-policies.html">Pre-commit test policies</a></li>
                  <li><a href="contribute-post-commit-test-policies.html">Post-commit test policies</a></li>
                </ul>
              </li>
              <li class="sidenav-menu-sub-title">Committers</li>
              <li>
                <ul class="list-unstyled sidenav-menu-sub-list">
                  <li><a href="contribute-become-a-committer.html">Become a committer</a></li>
                  <li><a href="contribute-committer-guide.html">Committer guide</a></li>
                  <li><a href="contribute-release-guide.html">Release guide</a></li>
                </ul>
              </li>
            </ul>
          </div>
          <div class="col-8 pt-3 offset-4">
            <h2>Post-commit test task guides</h2>

            <p>These guides provide steps for common post-commit test failure tasks.</p>

            <h3 id="find_specialist">Finding someone to triage a post-commit test failure</h3>

            <p>To find the proper person to triage a test failure, you can use these suggestions:</p>

            <ol>
              <li>If you can triage it yourself, go for it.</li>
              <li>Look at the GitHub blame for the files with problematic code.</li>
              <li>Ask in the <a target="_blank" href="https://the-asf.slack.com/messages/CBP2Z98Q7/">Unomi Slack chat</a>.</li>
              <li>Write to the dev list: dev@unomi.apache.org</li>
            </ol>

            <h3 id="rollback">Rolling back a commit</h3>

            <p>Rolling back is usually the fastest way to fix a failing test.  However it is often inconvenient for the original author. To help the author fix the issue, follow these steps when you rollback someone's change.</p>

            <ol>
              <li>Rollback the PR.</li>
              <li>Create a JIRA issue that contains the following information:
                <ul>
                  <li>the reason for the rollback</li>
                  <li>a link to the test failure's JIRA issue</li>
                  <li>triage information</li>
                  <li>any other relevant details</li>
                </ul>
              </li>
              <li>Assign the new JIRA issue to the original PR author.</li>
              <li>Consider re-opening the JIRA issue associated with the original PR (if there is one).</li>
              <li>Send a notification email with information about the rollback, links to the original PR and the rollback PR, and the reasons for the rollback to:
                <ul>
                  <li>dev@unomi.apache.org</li>
                  <li>the original PR author and the committer of the PR</li>
                </ul>
              </li>
              <li>Close the test failure JIRA issue. Your work is done here!</li>
            </ol>

            <h3 id="disabling">Disabling a failing test</h3>

            <p>If a test fails, our first priority is to rollback the problematic code and fix the issue. However, if both: rollback and fix will take awhile to implement, it is safer to temporarily disable the test until the fix is ready.</p>

            <p>Use caution when deciding to disable a test. When tests are disabled, contributors are no longer developing on top of fully tested code. If you decide to disable a test, use the following guidelines:</p>

            <ul>
              <li>Notify the dev@unomi.apache.org mailing list. Describe the problem and let everyone know which test you are disabling.</li>
              <li>Implement the fix and get the test back online as soon as possible.</li>
            </ul>

            <p>While the test is disabled, contributors should not push code to the failing test's coverage area. The code area is not properly tested until you fix the test.</p>
          </div>
        </div>
      </div>
