Github user karanmehta93 commented on a diff in the pull request:
https://github.com/apache/phoenix/pull/277#discussion_r146695278
--- Diff:
phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataProtocol.java
---
@@ -95,6 +97,7 @@
// Key is the SYSTEM.CATALOG timestamp for the version and value is
the version string.
private static final NavigableMap<Long, String> TIMESTAMP_VERSION_MAP
= new TreeMap<>();
static {
+ TIMESTAMP_VERSION_MAP.put(MIN_SYSTEM_TABLE_MIGRATION_TIMESTAMP,
MIGRATION_IN_PROGRESS);
--- End diff --
Nope, this one is not only for test.
When you acquire a lock on SYSMUTEX, the method requires you to pass in a
server side timestamp of SYSCAT table (Since it was meant for that earlier) and
it checks if the current timestamp is less than the MIN_SYSTEM_TABLE_TIMESTAMP
before upgrading it.
I can't use MIN_SYSTEM_TABLE_TIMESTAMP because then the code for
`acquireUpgradeMutex()` wont allow me to acquire the mutex lock.
I use the same `UpgradeInProgressException` to prevent multiple clients
migrating the system tables together. I use this value in
`UpgradeInProgressException` to change the error message displayed to the user.
---