• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ExpediaGroup / drone-fly / #139

26 Mar 2026 08:11PM UTC coverage: 34.545% (-21.6%) from 56.14%
#139

push

web-flow
feat: Upgrade JDK to Java 21 (#55)

* Migrate project to Java 21

- Upgrade Hive metastore 2.3.9 -> 4.0.1 and Apiary Extensions 6.0.2 -> 8.1.15
- Add hadoop-client-runtime:3.3.6 to provide shaded WoodStox XML parser classes
- Upgrade Spring Boot 2.7.10 -> 3.4.13 (Spring Framework 6.1)
- Migrate javax.annotation.PreDestroy -> jakarta.annotation.PreDestroy
- Exclude DataSourceAutoConfiguration to suppress Hive transitive JDBC drivers
- Upgrade Guava 27.1-jre -> 33.4.0-jre, MSK IAM Auth 1.1.9 -> 2.2.0
- Drop explicit Dropwizard/JUnit/Mockito/AssertJ/Logback/Log4j version pins (Boot BOM manages)
- Set jdk.version=21 and maven.compiler.release=21
- Upgrade Spotless 2.4.1 -> 2.43.0 (Java 21 compatible, google-java-format 1.19.2)
- Upgrade JaCoCo 0.8.6 -> 0.8.12 and Surefire 3.0.0-M5 -> 3.2.5
- Add .mvn/jvm.config with --add-exports for google-java-format on JDK 21
- Add Surefire --add-opens argLine for Hadoop/Hive/Mockito runtime reflection
- Update Docker base image openjdk:8-jdk -> eclipse-temurin:21-jre
- Add Jib container --add-opens JVM flags for Hadoop/Hive runtime
- Update GitHub Actions workflows: Java 21, temurin, checkout@v4, setup-java@v4
- Fix Hive 4.x API changes: HMSHandler constructor, event constructors, JavaUtils package
- Migrate commons-lang -> commons-lang3 (StringUtils)
- Replace deprecated org.awaitility.Duration with java.time.Duration
- Upgrade SpotBugs plugin to 4.8.6 for Java 21 compatibility
- Switch JDK distribution from Eclipse Temurin to Amazon Corretto
- Change Docker base image to Amazon Corretto on Amazon Linux 2023

* Fix integration tests: add Hive 3.x/4.x compatibility shims

apiary-hive-events:8.1.15 was compiled against Hive 3.x and is
incompatible with hive-metastore:4.0.1 at runtime. Three layers of
incompatibility are resolved via classpath shims in drone-fly-app:

1. HiveMetaStore.java: re-introduces HiveMetaStore$HMSHandler as an
   inner class (removed in Hive 4.x, now a standalone HMSHandler).
   Required by Json... (continued)

12 of 164 new or added lines in 14 files covered. (7.32%)

133 of 385 relevant lines covered (34.55%)

0.35 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/drone-fly-app/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
1
/**
2
 * Copyright (C) 2020-2026 Expedia, Inc.
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16
package org.apache.hadoop.hive.metastore;
17

18
import org.apache.hadoop.conf.Configuration;
19
import org.apache.hadoop.hive.metastore.api.MetaException;
20

21
/**
22
 * Compatibility shim that re-introduces {@code HiveMetaStore.HMSHandler} as an inner class. In Hive
23
 * 4.x, {@code HMSHandler} became a standalone top-level class and the inner class was removed.
24
 * Libraries compiled against Hive 3.x (e.g. apiary-hive-events <= 8.1.15) still reference {@code
25
 * HiveMetaStore$HMSHandler}, so this shim restores it.
26
 */
NEW
27
public class HiveMetaStore {
×
28

29
  public static class HMSHandler extends org.apache.hadoop.hive.metastore.HMSHandler {
30
    public HMSHandler(String name, Configuration conf) throws MetaException {
NEW
31
      super(name, conf);
×
NEW
32
    }
×
33
  }
34
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc