av9ash/GitBugs huggingface dataset:
Bug: Add metrics around automatic switching from PREAD to STREAM
Status: Open | Priority: Major | Resolution: 
Created: 03/Oct/23 13:02

Unless specifically configured, scans start with ReadType.DEFAULT. In which case, they start as PREAD until hbase.storescanner.pread.max.bytes, then are converted to STREAM. 

We've sometimes found evidence of trySwitchToStream taking a good amount of time in profiles. This is because switching to STREAM involves opening a new DFSInputStream which requires hitting the namenode for block locations.

Recently I did a perf test of various scan sizes and our default max bytes threshold (4 blocks). I found that there is much more downside to switching to STREAM too early, than there is in staying in PREAD too long. When the scan size is around the switchover threshold (4-8 blocks), overall throughput is reduced by over 50%. When the scan size is much larger than the threshold (20+ blocks), staying in PREAD too long only reduces throughput by < 10%.

These results are in our environment where we use only SSD and have 100% locality, so "seeks" are not relevant, disk IO is very fast, and needing to block to send network requests to the namenode can have an outsized impact. Others may have different constraints, but metrics can help make informed decisions.

I'd like a metric for switchesToStreamCount, and a histogram of bytesReadAfterStreamSwitch.
Bug: rpcservice should perform some important admin operation to priority ADMIN_QOS
Status: Open | Priority: Minor | Resolution: 
Created: 30/Nov/23 09:32
Affects Version/s: 2.5.0

some important admin operations should be admin priority,like compactionSwitch,rollWALWriter,updateConfiguration.
these operations called by admin should be considered a higher priority operation and given to the priority queue, but is currently considered to have the same priority as read or write requests. If the handle is occupied, the operations cannot be execute successful. For example, in our scenario, some abnormal phoenix sql is killed by controlling the amount of data that scan can filter with dynamic parameters. Abnormal sql often results in a full handle. In this case, the configuration cannot be dynamically modified to implement emergency traffic limiting.
{code:java}
@Override
@QosPriority(priority = HConstants.ADMIN_QOS)
public UpdateConfigurationResponse updateConfiguration(
    RpcController controller, UpdateConfigurationRequest request)
    throws ServiceException {{code}
Bug: Provide option to skip wal while using TableOutputFormat
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 18/Dec/23 15:37

If we have replication setup between clusters A <-> B, during production incidents where HFiles get corrupted (e.g. via hdfs missing blocks) on cluster A, we can use CopyTable job to copy the data from B

In those cases considering the data is being copied from B to A via CopyTable, it doesn't make sense to write to WALs on A using TableOutputFormat (since the mutations being copied already exist on B). 
We can add a config to customise durability ([https://github.com/apache/hbase/blob/master/hbase-client/src/main/java/org/apache/hadoop/hbase/client/Durability.java]) within TableOutputFormat so that an operator can use it to skip WAL writes
Bug: compact_rs not support hostname,port
Status: Open | Priority: Minor | Resolution: 
Created: 14/Dec/23 03:07
Affects Version/s: 2.2.7

hbase:010:0> compact_rs 'hadoop-222-149.hfb.odeon.cn,60020'

ERROR: begin 28, end 27, length 33

Should have something to do with ServerName.ValueOf()，It has changed from HBASE-24305.
{code:java}
public static ServerName valueOf(final String serverName) {
  int firstSep = serverName.indexOf(SERVERNAME_SEPARATOR);
  int lastSep = serverName.lastIndexOf(SERVERNAME_SEPARATOR);
  String hostname = serverName.substring(0, firstSep);
  int port = Integer.parseInt(serverName.substring(firstSep + 1, lastSep));
  long startCode = Long.parseLong(serverName.substring(lastSep + 1));
  return valueOf(hostname, port, startCode);
} {code}
Bug: Region Server Logs getting spammed with warning when storefile has no reader
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 09/Oct/23 06:57

Hbase tables which have IS_MOB set as TRUE and table metrics is enabled, there are warning logs getting generated "StoreFile <hdfs path> has a null Reader on hbase region server. 
After setting IS_MOB as false for a table, this logs are not visible.
Bug: Memstore flushRequest can be blocked by a delayed flush scheduled by PeriodicMemstoreFlusher, RegionTooBusyExceptions for up to 5 minutes
Status: Resolved | Priority: Minor | Resolution: Duplicate
Created: 13/Dec/23 23:12
Affects Version/s: 2.0.0

*Steps to reproduce:*
# Make an edit to a region.
# Wait 1 hour + 10 seconds (default value of {{hbase.regionserver.optionalcacheflushinterval}} plus {{hbase.regionserver.flush.check.period}}.)
# Make a very large number of edits to the region (i.e. >= 1GB, pressure the memstore.)

*Expected:*
Memstore pressure leads to flushes.

*Result:*
The PeriodicMemstoreFlusher has scheduled a refresh with a random delay of 0-5 minutes (default for {{hbase.regionserver.periodicmemstoreflusher.rangeofdelayseconds}}.) Memstore pressure flushes are blocked by the scheduled delayed flush. Client receives 0-5 minutes of {{RegionTooBusyExceptions}} until the delayed flush executes.

*Logs:*
2023-12-13 06:00:13,573 INFO regionserver.HRegionServer - MemstoreFlusherChore requesting flush of <REGION> because <CF> has an old edit so flush to free WALs after random delay 166761 ms
2023-12-13 06:00:53,219 DEBUG regionserver.HRegion - Flush requested on <REGION>
2023-12-13 06:01:47,694 WARN regionserver.HRegion - Region is too busy due to exceeding memstore size limit. org.apache.hadoop.hbase.RegionTooBusyException: Over memstore limit=1.0 G, regionName=<REGION>, server=<SERVER>
    at org.apache.hadoop.hbase.regionserver.HRegion.checkResources
...
repeats
...
2023-12-13 06:01:52,223 WARN regionserver.HRegion - Region is too busy due to exceeding memstore size limit. org.apache.hadoop.hbase.RegionTooBusyException: Over memstore limit=1.0 G, regionName=<REGION>, server=<SERVER>
    at org.apache.hadoop.hbase.regionserver.HRegion.checkResources
...
2023-12-13 06:03:00,340 INFO regionserver.HRegion - Flushing <REGION> 1/1 column families, dataSize=534.77 MB heapSize=1.00 GB
2023-12-13 06:03:09,634 INFO regionserver.HRegion - Finished flush of dataSize ~534.77 MB/560744948, heapSize ~1.00 GB/1073816296, currentSize=0 B/0 for <REGION> in 9294ms, sequenceid=21310753, compaction requested=false

Note also this is the same cause as discussed in HBASE-16030 conversation https://issues.apache.org/jira/browse/HBASE-16030?focusedCommentId=15340153&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-15340153
Bug: Add java.base/sun.net.dns and java.base/sun.net.util  export to jdk11 JVM test flags
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 07/Dec/23 06:09
Affects Version/s: 2.4.17

While testing with JDK17 we have found  that we need to add 
{noformat}
      --add-exports java.base/sun.net.dns=ALL-UNNAMED
      --add-exports java.base/sun.net.util=ALL-UNNAMED
{noformat}
on top of what is already defined in _hbase-surefire.jdk11.flags_ , otherwise RS and Master startup fails in the Hadoop security code.

While this does not affect the test suite (at least not the commonly run tests), I consider hbase-surefire.jdk11.flags to be an unoffical resource to getting HBase to run on newer JDK versions.
Bug: Add option in RegionMover.java to isolate one or more regions on the RegionSever
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 19/Oct/23 04:20
Affects Version/s: 2.4.17

Sometime one or more HBase regions on RS are under high load. This can lead to resource starvation for other regions hosted on the RS. It might be necessary to isolate one or more regions on the RS so that region with heavy load doesn't impact other regions hosted on the same RS.

RegionMover.java class provides a way to load/unload the regions from the specific RS. It would be a good to have an option to pass list of region hash that should be left (or moved) on the RS and put the RS in the draining/decommission mode so HMaster doesn't assign new regions on the RS.

Ex.
{code:java}
--isolateRegionIds regionHash1,regionHash2,regionHash3{code}
Bug: HRegionServer encountered NPE while executing getBootstrapNodes
Status: Open | Priority: Minor | Resolution: 
Created: 24/Dec/23 16:28
Affects Version/s: 3.0.0-beta-2

When the HRegionServer has just started, and the bootstrapNodeManager has not been initialized yet, handling the client's GetBootstrapNodesRequest by calling the bootstrapNodeManager's getBootstrapNodes method results in a NPE exception.
The logs are as followed:

{code:java}
2023-12-17T15:25:31,984 ERROR [RpcServer.default.FPBQ.Fifo.handler=29,queue=2,port=16020] ipc.RpcServer: Unexpected throwable object
java.lang.NullPointerException: null
        at org.apache.hadoop.hbase.regionserver.HRegionServer.getBootstrapNodes(HRegionServer.java:3632) ~[hbase-server-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]
        at org.apache.hadoop.hbase.HBaseRpcServicesBase.getBootstrapNodes(HBaseRpcServicesBase.java:304) ~[hbase-server-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]
        at org.apache.hadoop.hbase.shaded.protobuf.generated.RegistryProtos$ClientMetaService$2.callBlockingMethod(RegistryProtos.java:6737) ~[hbase-protocol-shaded-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:437) ~[hbase-server-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:124) ~[hbase-server-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]
        at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:102) ~[hbase-server-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]
        at org.apache.hadoop.hbase.ipc.RpcHandler.run(RpcHandler.java:82) ~[hbase-server-3.0.0-beta-1-SNAPSHOT.jar:3.0.0-beta-1-SNAPSHOT]

{code}
Bug: ClientSideRegionScanner appears not to shutdown MobFileCache
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 28/Nov/23 16:21
Affects Version/s: 2.5.5

As far as I can tell from the code, and also what I see in jstack, ClientSideRegionScanner doesn't appear to shutdown it's MobFileCache. After doing a lot of scanning of a snapshot, application threads are polluted with a lot of MobFileCache ScheduledThreadPoolExecutors that never seem to get cleaned up.
Bug: [Flaky test] Fix 'test_list_decommissioned_regionservers' in TestAdminShell2.java
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 20/Dec/23 22:02

See flaky board: [https://nightlies.apache.org/hbase/HBase-Find-Flaky-Tests/master/1345/output/dashboard.html]
Failed : [14675|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14675]  [14676|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14676]  [14677|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14677]  [14678|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14678]  [14679|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14679]  [14680|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14680]  [14681|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14681]  [14682|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14682]  [14683|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14683]  [14684|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14684]  [14685|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14685]  [14686|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14686]  [14687|https://ci-hbase.apache.org//job/HBase-Flaky-Tests/job/master/14687]
Bug: FileSystem.getFileStatus can not get the correct file length for files which are being written
Status: Open | Priority: Minor | Resolution: 
Created: 22/Dec/23 15:32

When reading from a opening WAL file in replication, we will use FileSystem.getFileStatus to get the file length and then use it to calculate the trailer's position. But if a file is being written, you can not get the correct length from namenode, you could even get a 0 if the file has only one block(for most WAL files).

This will not lead to real data loss as we do not rely on the file length to determine whether we should read the file, but since it will mess up the trailer's position, it may lead to incorrect metrics, like un cleanly closed wal files, and fail some UTs, and also output some confusing logs.

We should find a way to make it better.
Bug: region_status.rb is broken
Status: Open | Priority: Minor | Resolution: 
Created: 19/Dec/23 10:30
Affects Version/s: 2.5.7

{{region_status.rb}} which is broken by all ends on all active branches.

Need to thoroughly fix it as it has multiple errors.

Not sure who uses it though as this is broken in branch-2 as well. We should maybe deprecate and remove it.

CC: [~zhangduo]
Bug: Alter table to set TTL using hbase shell failed when ttl string is not match format
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 02/Nov/23 09:48
Affects Version/s: 2.4.14

create 'test','f1'

alter 'test',\{NAME=>'f1',TTL=>'111x'}

 
{code:java}
hbase:001:0> alter 'test',{NAME=>'f1',TTL=>'111x'}
ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: TTL for column family f1 must be positive. Set hbase.table.sanity.checks to false at conf or table descriptor if you want to bypass sanity checks
    at org.apache.hadoop.hbase.util.TableDescriptorChecker.warnOrThrowExceptionForFailure(TableDescriptorChecker.java:321)
    at org.apache.hadoop.hbase.util.TableDescriptorChecker.sanityCheck(TableDescriptorChecker.java:165)
    at org.apache.hadoop.hbase.master.HMaster$14.run(HMaster.java:2666)
    at org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:132)
    at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2660)
    at org.apache.hadoop.hbase.master.HMaster.modifyTable(HMaster.java:2698)
    at org.apache.hadoop.hbase.master.MasterRpcServices.modifyTable(MasterRpcServices.java:1554)
    at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
    at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:477)
    at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:123)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:369)
    at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:349)For usage try 'help "alter"'{code}
it is misleading..

 

we need tell user wether theire command is wrong..

some times we copy some string which may have some invisible characters， we need let user to check it
Bug: Support overriding the HFileOutputFormat2 RecordWriter's outputDir
Status: Open | Priority: Minor | Resolution: 
Created: 30/Oct/23 15:05

Currently when the HFileOutputFormat2 creates a RecordWriter, it derives the output directory from the OutputCommitter. This is generally the desired behavior, but we have a use case where it would be helpful to explicitly override it.

The use-case is essentially a variant of the MultiTableHFileOutputFormat behavior. But rather than having one job that output data for a number of tables, we would like to have one job subdivide its output so that it can be bulk-loaded over the course of multiple distcp+LoadIncrementalHFiles runs. This is helpful when an individual table's data needs to be sent to multiple clusters, or for when loading the data in chunks is needed for reliability and stability. 

Adding a path override configuration option to the MultiTableHFileOutputFormat would allow us to extend the output format and create multiple RecordWriters, each configured with separate output directories.
Bug: When specifying the wrong BloomFilter type while creating a table in HBase shell, an error will occur.
Status: Resolved | Priority: Minor | Resolution: Fixed
Created: 11/Oct/23 08:17
Affects Version/s: 2.5.5

Executing the following command in HBase shell, specifying the wrong BoolFilter type, will prompt "ERROR: uninitialized constant Java::OrgApacheHadoopHbaseRegionserver::StoreFile::BloomType".
{code:java}
create 'zx',{NAME=>'0', BLOOMFILTER=>'TEST'} {code}
!image-2023-10-11-16-14-31-219.png!
Bug: HBaseContext.bulkLoad doesn't work with ROWPREFIX_FIXED_LENGTH bloom filter
Status: Open | Priority: Minor | Resolution: 
Created: 19/Oct/23 01:42
Affects Version/s: 1.0.0

HBaseContext.bulkLoad throws IllegalArgumentException for bloom type set to ROWPREFIX_FIXED_LENGTH in FamilyHFileWriteOptions as the key "RowPrefixBloomFilter.prefix_length" is not set in Configuration.

 

Here's my suggestion to fix it:
https://github.com/apache/hbase-connectors/commit/89a268711ff4e2cd349b3f78961b8ac6bb895c28
Bug: Build fails with Hadoop 3.3.5 and higher
Status: Resolved | Priority: Minor | Resolution: Duplicate
Created: 17/Oct/23 18:55
Affects Version/s: 2.4.17

https://issues.apache.org/jira/browse/HADOOP-15983 changed dependencies and that makes our {{check-jar-contents-for-stuff-with-hadoop}} check fail:

Excerpt:
{noformat}
[INFO] --- exec-maven-plugin:1.6.0:exec (check-jar-contents-for-stuff-with-hadoop) @ hbase-shaded-with-hadoop-check-invariants ---
[ERROR] Found artifact with unexpected contents: '/home/lars/Downloads/hbase/hbase-2.4.17-src/hbase-shaded/hbase-shaded-client/target/hbase-shaded-client-2.4.17.jar'
    Please check the following and either correct the build or update
    the allowed list with reasoning.

    com/
    com/sun/
    com/sun/jersey/
    com/sun/jersey/json/
    com/sun/jersey/json/impl/
    com/sun/jersey/json/impl/reader/
    com/sun/jersey/json/impl/reader/JsonXmlEvent$Attribute.class
    com/sun/jersey/json/impl/reader/JsonXmlStreamReader$1.class
    com/sun/jersey/json/impl/reader/XmlEventProvider$1.class
    com/sun/jersey/json/impl/reader/NaturalNotationEventProvider.class
    com/sun/jersey/json/impl/reader/XmlEventProvider.class
    com/sun/jersey/json/impl/reader/XmlEventProvider$ProcessingInfo.class
    com/sun/jersey/json/impl/reader/StartElementEvent.class
    com/sun/jersey/json/impl/reader/CharactersEvent.class
    com/sun/jersey/json/impl/reader/JacksonRootAddingParser$1.class
    com/sun/jersey/json/impl/reader/EndElementEvent.class
    com/sun/jersey/json/impl/reader/JsonXmlStreamReader.class
    com/sun/jersey/json/impl/reader/StaxLocation.class
    com/sun/jersey/json/impl/reader/JsonNamespaceContext.class
    com/sun/jersey/json/impl/reader/JsonXmlEvent.class
    com/sun/jersey/json/impl/reader/JacksonRootAddingParser.class
    com/sun/jersey/json/impl/reader/StartDocumentEvent.class
    com/sun/jersey/json/impl/reader/MappedNotationEventProvider.class
    com/sun/jersey/json/impl/reader/EndDocumentEvent.class
    com/sun/jersey/json/impl/reader/JsonFormatException.class
    com/sun/jersey/json/impl/reader/XmlEventProvider$CachedJsonParser.class
    com/sun/jersey/json/impl/reader/JacksonRootAddingParser$State.class
    com/sun/jersey/json/impl/JaxbRiXmlStructure.class
    com/sun/jersey/json/impl/ImplMessages.class
    com/sun/jersey/json/impl/JSONMarshallerImpl.class
    com/sun/jersey/json/impl/NameUtil.class
    com/sun/jersey/json/impl/FilteringInputStream.class
    com/sun/jersey/json/impl/JaxbProvider.class
[....]
{noformat}

I'm afraid I'm a bit at a loss with the current Maven build system as to what the actual fix would be.

I tested it against 2.4.17 as well as master as of today. Master already fails in an earlier step ({{Found Banned Dependency: org.bouncycastle:bcprov-jdk15on:jar:1.52}}) which I assume is a separate issue but I further assume that it would also fail at this step if it were to get this far.
Bug: HBase backup: allow direct DistCP flag
Status: Open | Priority: Minor | Resolution: 
Created: 09/Oct/23 10:12

HBase docs recommend that backups are done to cloud storage such as S3.

Internally, backup and restore relies on DistCP to copy files to backup storage. DistCP's docs mention the "-direct" parameter:

> Useful for avoiding potentially very expensive temporary file rename operations when the destination is an object store 

It looks useful to allow specifying this parameter for HBase backups, similar to how the YARN queue is also exposed.
Bug: Sync jvm11 module flags from hbase-surefire.jdk11.flags to bin/hbase
Status: Resolved | Priority: Trivial | Resolution: Fixed
Created: 15/Dec/23 07:01
Affects Version/s: 2.4.17

All the JDK11 seems to be coming from the runtime code, and we have found that the missing options are required for the runtime when testing JDK 17.

Only the JDK17 "--add-opens java.base/jdk.internal.util.random=ALL-UNNAMED" is known to be used by the test code, and probably not by the runtime.

Specifically, these ones are missing:

java.base/java.io=ALL-UNNAMED (pending in  HBASE-28259. If that one doesn't add it to surefire, we need to add that here)
java.base/java.util=ALL-UNNAMED
java.base/java.util.concurrent=ALL-UNNAMED
Bug: Add  java.base/java.io=ALL-UNNAMED open to jdk11_jvm_flags
Status: Resolved | Priority: Trivial | Resolution: Fixed
Created: 14/Dec/23 08:54
Affects Version/s: 2.4.17

hbase shell
2023-12-13T23:49:50.846+08:00 [main] WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
Pass '--add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED' to enable.
Bug: [hbase-thirdparty] Add JerseyFlowSubscriber to ignoreClass in maven enforcer plugin
Status: Resolved | Priority: Blocker | Resolution: Fixed
Created: 23/Nov/20 09:17

{noformat}
08:23:56 [INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-maven-version) @ hbase-shaded-jersey ---
08:23:56 [INFO] Adding ignore: module-info
08:23:56 [INFO] Adding ignore: **.glassfish.jersey.internal.jsr166.SubmissionPublisher*
08:23:56 [INFO] Restricted to JDK 1.8 yet org.glassfish.jersey.core:jersey-common:jar:2.32:compile contains META-INF/versions/11/org/glassfish/jersey/internal/jsr166/JerseyFlowSubscriber$1.class targeted to 55.0
08:23:56 [WARNING] Rule 1: org.apache.maven.plugins.enforcer.EnforceBytecodeVersion failed with message:
HBase has unsupported dependencies.
  HBase requires that all dependencies be compiled with version 1.8 or earlier
  of the JDK to properly build from source.  You appear to be using a newer dependency. You can use
  either "mvn -version" or "mvn enforcer:display-info" to verify what version is active.
  Non-release builds can temporarily build with a newer JDK version by setting the
  'compileSource' property (eg. mvn -DcompileSource=1.8 clean package).
Found Banned Dependency: org.glassfish.jersey.core:jersey-common:jar:2.32
Use 'mvn dependency:tree' to locate the source of the banned dependencies.
{noformat}
Bug: TestCurrentHourProvider fails if the latest timezone changes are not present
Status: Resolved | Priority: Blocker | Resolution: Fixed
Created: 10/Dec/20 23:22
Affects Version/s: 2.4.1

According to [this link|https://www.oracle.com/java/technologies/tzdata-versions.html], a few timezones underwent changes in October of this year. For environments that do not have these latest updates, TestCurrentHourProvider will fail since information for certain time zones is out of date.

Example: On an environment running jdk8, this test fails for timezones America/Dawson, America/Whitehorse, Canada/Yukon, and Antarctica/Casey (all of which were affected by the latest changes described at the above link).

It seems that if timezone information on a particular environment is not up to date with the latest changes, this shouldn't indicate a failure of CurrentHourProvider, especially since this test specifically tests the functionality of CurrentHourProvider and using EnvironmentEdgeManager to mock time.