Merge branch 'stable-2.16' into stable-3.0

* stable-2.16:
  PatchFile: Fix getting comment context for left side
  Revert "Allow load labels to cross package boundaries by default"
  CommentSender: Add line number in debug log

Change-Id: Ifb0c467ee6e0e8201d233362e7058bdc522de431
diff --git a/.bazelrc b/.bazelrc
index 8b1abd6..d6d4ce6 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -4,7 +4,6 @@
 build --action_env=PATH
 build --disk_cache=~/.gerritcodereview/bazel-cache/cas
 build --java_toolchain //tools:error_prone_warnings_toolchain
-build --incompatible_disallow_load_labels_to_cross_package_boundaries=false
 
 test --build_tests_only
 test --test_output=errors
diff --git a/java/com/google/gerrit/server/mail/send/CommentSender.java b/java/com/google/gerrit/server/mail/send/CommentSender.java
index 6468038..7b11ce6 100644
--- a/java/com/google/gerrit/server/mail/send/CommentSender.java
+++ b/java/com/google/gerrit/server/mail/send/CommentSender.java
@@ -534,7 +534,8 @@
     } catch (IndexOutOfBoundsException err) {
       // Default to the empty string if the given line number does not appear
       // in the file.
-      logger.atFine().withCause(err).log("Failed to get line number of file on side %d", side);
+      logger.atFine().withCause(err).log(
+          "Failed to get line number %d of file on side %d", lineNbr, side);
       return "";
     } catch (NoSuchEntityException err) {
       // Default to the empty string if the side cannot be found.
diff --git a/java/com/google/gerrit/server/patch/PatchFile.java b/java/com/google/gerrit/server/patch/PatchFile.java
index 1593b11..439ac11 100644
--- a/java/com/google/gerrit/server/patch/PatchFile.java
+++ b/java/com/google/gerrit/server/patch/PatchFile.java
@@ -87,6 +87,14 @@
     }
   }
 
+  private String getOldName() {
+    String name = entry.getOldName();
+    if (name != null) {
+      return name;
+    }
+    return entry.getNewName();
+  }
+
   /**
    * Extract a line from the file, as a string.
    *
@@ -100,7 +108,7 @@
     switch (file) {
       case 0:
         if (a == null) {
-          a = load(aTree, entry.getOldName());
+          a = load(aTree, getOldName());
         }
         return a.getString(line - 1);
 
@@ -127,7 +135,7 @@
     switch (file) {
       case 0:
         if (a == null) {
-          a = load(aTree, entry.getOldName());
+          a = load(aTree, getOldName());
         }
         return a.size();
 
diff --git a/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java b/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java
index 60aacf7..7b44916 100644
--- a/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java
+++ b/javatests/com/google/gerrit/acceptance/server/change/CommentsIT.java
@@ -526,6 +526,13 @@
 
   @Test
   public void publishCommentsAllRevisions() throws Exception {
+    PushOneCommit.Result result = createChange();
+    String changeId = result.getChangeId();
+
+    pushFactory
+        .create(admin.newIdent(), testRepo, SUBJECT, FILE_NAME, "initial content\n", changeId)
+        .to("refs/heads/master");
+
     PushOneCommit.Result r1 =
         pushFactory
             .create(admin.newIdent(), testRepo, SUBJECT, FILE_NAME, "old boring content\n")
@@ -549,7 +556,7 @@
     addDraft(
         r1.getChangeId(),
         r1.getCommit().getName(),
-        newDraft(FILE_NAME, Side.PARENT, 2, "what happened to this?"));
+        newDraft(FILE_NAME, Side.PARENT, createLineRange(1, 0, 7), "what happened to this?"));
     addDraft(
         r2.getChangeId(),
         r2.getCommit().getName(),
@@ -634,8 +641,8 @@
                 + project.get()
                 + "/+/"
                 + c
-                + "/1/a.txt@a2 \n"
-                + "PS1, Line 2: \n"
+                + "/1/a.txt@a1 \n"
+                + "PS1, Line 1: initial\n"
                 + "what happened to this?\n"
                 + "\n"
                 + "\n"
@@ -663,7 +670,7 @@
                 + "/+/"
                 + c
                 + "/2/a.txt@a1 \n"
-                + "PS2, Line 1: \n"
+                + "PS2, Line 1: initial content\n"
                 + "comment 1 on base\n"
                 + "\n"
                 + "\n"
@@ -693,7 +700,7 @@
                 + "/+/"
                 + c
                 + "/2/a.txt@2 \n"
-                + "PS2, Line 2: nten\n"
+                + "PS2, Line 2: cntent\n"
                 + "typo: content\n"
                 + "\n"
                 + "\n");
@@ -1118,7 +1125,7 @@
 
   private DraftInput newDraft(String path, Side side, Comment.Range range, String message) {
     DraftInput d = new DraftInput();
-    return populate(d, path, side, null, range, message, false);
+    return populate(d, path, side, null, range.startLine, range, message, false);
   }
 
   private DraftInput newDraftOnParent(String path, int parent, int line, String message) {
@@ -1131,23 +1138,25 @@
       String path,
       Side side,
       Integer parent,
+      int line,
       Comment.Range range,
       String message,
       Boolean unresolved) {
-    int line = range.startLine;
     c.path = path;
     c.side = side;
     c.parent = parent;
     c.line = line != 0 ? line : null;
     c.message = message;
     c.unresolved = unresolved;
-    if (line != 0) c.range = range;
+    if (range != null) {
+      c.range = range;
+    }
     return c;
   }
 
   private static <C extends Comment> C populate(
       C c, String path, Side side, Integer parent, int line, String message, Boolean unresolved) {
-    return populate(c, path, side, parent, createLineRange(line, 1, 5), message, unresolved);
+    return populate(c, path, side, parent, line, null, message, unresolved);
   }
 
   private static Comment.Range createLineRange(int line, int startChar, int endChar) {