GH-41951: [Java] Add @FormatMethod annotations (#43376)

### What changes are included in this PR?

Annotate several methods using format-like string with error-prone `@ FormatMethod` and `@ FormatString` annotations.

Update error-prone version to 2.29.2 and remove unused error-prone javac version property.

### Are these changes tested?
 
CI/CD

### Are there any user-facing changes?

None

* GitHub Issue: #41951

Authored-by: Laurent Goujon <laurent@apache.org>
Signed-off-by: David Li <li.davidm96@gmail.com>
diff --git a/java/memory/memory-core/pom.xml b/java/memory/memory-core/pom.xml
index ce78fc4..db1b019 100644
--- a/java/memory/memory-core/pom.xml
+++ b/java/memory/memory-core/pom.xml
@@ -47,6 +47,10 @@
       <groupId>org.checkerframework</groupId>
       <artifactId>checker-qual</artifactId>
     </dependency>
+    <dependency>
+      <groupId>com.google.errorprone</groupId>
+      <artifactId>error_prone_annotations</artifactId>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/java/memory/memory-core/src/main/java/module-info.java b/java/memory/memory-core/src/main/java/module-info.java
index e2a0762..e74044e 100644
--- a/java/memory/memory-core/src/main/java/module-info.java
+++ b/java/memory/memory-core/src/main/java/module-info.java
@@ -27,5 +27,6 @@
   requires jsr305;
   requires static org.checkerframework.checker.qual;
   requires static org.immutables.value.annotations;
+  requires static com.google.errorprone.annotations;
   requires org.slf4j;
 }
diff --git a/java/memory/memory-core/src/main/java/org/apache/arrow/memory/BaseAllocator.java b/java/memory/memory-core/src/main/java/org/apache/arrow/memory/BaseAllocator.java
index 3f4426d..dd6375e 100644
--- a/java/memory/memory-core/src/main/java/org/apache/arrow/memory/BaseAllocator.java
+++ b/java/memory/memory-core/src/main/java/org/apache/arrow/memory/BaseAllocator.java
@@ -16,6 +16,8 @@
  */
 package org.apache.arrow.memory;
 
+import com.google.errorprone.annotations.FormatMethod;
+import com.google.errorprone.annotations.FormatString;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -539,9 +541,8 @@
     return sb.toString();
   }
 
-  /* Remove @SuppressWarnings after fixing https://github.com/apache/arrow/issues/41951 */
-  @SuppressWarnings("FormatStringAnnotation")
-  private void hist(String noteFormat, Object... args) {
+  @FormatMethod
+  private void hist(@FormatString String noteFormat, Object... args) {
     if (historicalLog != null) {
       historicalLog.recordEvent(noteFormat, args);
     }
diff --git a/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/HistoricalLog.java b/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/HistoricalLog.java
index 659ddde..5b1bdd8 100644
--- a/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/HistoricalLog.java
+++ b/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/HistoricalLog.java
@@ -16,6 +16,8 @@
  */
 package org.apache.arrow.memory.util;
 
+import com.google.errorprone.annotations.FormatMethod;
+import com.google.errorprone.annotations.FormatString;
 import java.util.ArrayDeque;
 import java.util.Arrays;
 import java.util.Deque;
@@ -42,9 +44,8 @@
    *     object instance is best.
    * @param args for the format string, or nothing if none are required
    */
-  @SuppressWarnings("FormatStringAnnotation")
-  /* Remove @SuppressWarnings after fixing https://github.com/apache/arrow/issues/41951 */
-  public HistoricalLog(final String idStringFormat, Object... args) {
+  @FormatMethod
+  public HistoricalLog(@FormatString final String idStringFormat, Object... args) {
     this(Integer.MAX_VALUE, idStringFormat, args);
   }
 
@@ -65,9 +66,8 @@
    *     object instance is best.
    * @param args for the format string, or nothing if none are required
    */
-  @SuppressWarnings("AnnotateFormatMethod")
-  public HistoricalLog(final int limit, final String idStringFormat, Object... args) {
-    // Remove @SuppressWarnings after fixing https://github.com/apache/arrow/issues/41951
+  @FormatMethod
+  public HistoricalLog(final int limit, @FormatString final String idStringFormat, Object... args) {
     this.limit = limit;
     this.idString = String.format(idStringFormat, args);
     this.firstEvent = null;
@@ -80,9 +80,8 @@
    * @param noteFormat {@link String#format} format string that describes the event
    * @param args for the format string, or nothing if none are required
    */
-  @SuppressWarnings("AnnotateFormatMethod")
-  public synchronized void recordEvent(final String noteFormat, Object... args) {
-    // Remove @SuppressWarnings after fixing https://github.com/apache/arrow/issues/41951
+  @FormatMethod
+  public synchronized void recordEvent(@FormatString final String noteFormat, Object... args) {
     final String note = String.format(noteFormat, args);
     final Event event = new Event(note);
     if (firstEvent == null) {
diff --git a/java/pom.xml b/java/pom.xml
index 45acf9d..a6c1002 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -106,8 +106,7 @@
     <arrow.vector.classifier></arrow.vector.classifier>
     <forkCount>2</forkCount>
     <checkstyle.failOnViolation>true</checkstyle.failOnViolation>
-    <errorprone.javac.version>9+181-r4173-1</errorprone.javac.version>
-    <error_prone_core.version>2.28.0</error_prone_core.version>
+    <error_prone_core.version>2.29.2</error_prone_core.version>
     <mockito.core.version>5.11.0</mockito.core.version>
     <mockito.inline.version>5.2.0</mockito.inline.version>
     <checker.framework.version>3.45.0</checker.framework.version>
@@ -161,6 +160,12 @@
         <version>3.0.2</version>
       </dependency>
       <dependency>
+        <groupId>com.google.errorprone</groupId>
+        <artifactId>error_prone_annotations</artifactId>
+        <version>${error_prone_core.version}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>${dep.slf4j.version}</version>