Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHOENIX-6053 Split Server Side Code into a Separate Module #1690

Closed
wants to merge 1 commit into from

Conversation

Aarchy
Copy link
Contributor

@Aarchy Aarchy commented Sep 25, 2023

No description provided.

Copy link
Contributor

@stoty stoty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you.

I've left some general comments.
We can talk them over tomorrow.

* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.phoenix.coprocessor;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having a .coprocessor. package in phoenix-core is iffy.
I'd prefer if we renamed this package to something else, like org.apache.phoenix.scanattributes or similar.

@@ -239,18 +243,50 @@ private ParallelIteratorFactory wrapParallelIteratorFactory () {
// wrap any existing parallelIteratorFactory
return new WrappingResultIteratorFactory(innerFactory, parallelIteratorFactory);
}


// TODO better place?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As it is only called from this class place, having it here is fine.
It doesn't need to be static either.

The same goes for other static helpers that were moved out of the coprocessors.

@@ -18,6 +18,7 @@
package org.apache.phoenix.execute;

import static org.apache.phoenix.query.QueryConstants.UNGROUPED_AGG_ROW_KEY;
import static org.apache.phoenix.coprocessor.BaseScannerRegionObserverConstants.AGGREGATORS;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice to be consistent with static imports, but there is no need to clean that up in this patch.

@@ -128,6 +131,30 @@ public ScanPlan(StatementContext context, FilterableStatement statement, TableRe
this.rowOffset = rowOffset;
}

// TODO better place?
public static void serializeScanRegionObserverIntoScan(Scan scan, int limit,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a comment that it is static because it's called from tests

@@ -17,7 +17,6 @@
*/
package org.apache.phoenix.hbase.index.builder;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move to org.apache.phoenix.index ?

import org.apache.phoenix.schema.PTableImpl;
import org.apache.phoenix.util.TrustedByteArrayOutputStream;

public final class PhoenixIndexBuilderStatic {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The name is probably from my POC , but it would better to call this something like ...Client or ...Helper, or similary.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thee same goes for all ...Static classes.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I used those names.,I'll rename them

throw new IOException(e);
}

// private static List<Mutation> getMutationsForSystemTaskTable(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the final version remove code instead of commenting it out.

@@ -21,7 +21,6 @@
import org.apache.phoenix.thirdparty.com.google.common.collect.Maps;
import org.apache.phoenix.thirdparty.com.google.common.collect.Sets;

import org.apache.hadoop.hbase.client.Delete;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can see a lot of files where you are just randomly removing unused imports.
This change is already huge, leaving these alone for now would make it somewhat more managable.

We can handle unrelated cleanups in separate tickets.

This only applies when you only remove non-server unused imports.
When there are other changes, it's fine to clean up them.

import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.schema.StaleRegionBoundaryCacheException;

public class ClientUtil {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When splitting classes to client and server ones, check where it used more often.
In some cases it may beneficial to keep the old name for the client class, and in some cases it may be better to keep it for the server class, whichever makes more sense, or makes the patch smaller.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked these, if I'm correct, there are 3 of these kind of splits:

  • ClientUtil - ServerUtil: Here the original class was ServerUtil, so using ClientUtil on the client side is ok IMO.
  • Task - ServerTask and ViewUtil - ServerViewUtil: They are similar, there is inheritance between these classes, Server versions are the more specified classes and the name represents this (also they are less used)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

@Aarchy Aarchy force-pushed the client branch 4 times, most recently from 5d6a009 to f3af6de Compare October 3, 2023 08:46
Copy link
Contributor

@stoty stoty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some suggestions about names and packages.
Please do another pass to undo the rest of the changes that only affect import order or unused imports.

<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<ignoreNonCompile>true</ignoreNonCompile>
<!-- <ignoredUnusedDeclaredDependencies> -->
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can delete these

</configuration>
<executions>
<execution>
<!-- generates the file that will be used by the sandbox script
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check that the sandbox environment still works.

import org.apache.phoenix.exception.SQLExceptionInfo;
import org.apache.phoenix.schema.StaleRegionBoundaryCacheException;

public class ClientUtil {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks.

@@ -443,16 +435,15 @@ public MetaDataMutationResult validateAndAddMetadata(PTable table, byte[][] rowK
}

private MetaDataMutationResult compareWithPkColumns(byte[] colName,
PTable table, byte[] familyName) {
PTable table, byte[] familyName) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit:
This looks worse than before

public static boolean isMaxLookbackTimeEnabled(Configuration conf){
return isMaxLookbackTimeEnabled(conf.getLong(PHOENIX_MAX_LOOKBACK_AGE_CONF_KEY,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not a scan attribute.
It may be better to move this to QueryServicesOptions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this class (and also the function) is moved to coprocessors package

import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
import org.apache.phoenix.memory.MemoryManager;

import org.apache.phoenix.scanattributes.ServerCachingProtocol.ServerCacheFactory;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

import org.apache.phoenix.hbase.index.util.IndexManagementUtil;
import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.query.QueryConstants;
import org.apache.phoenix.query.QueryServices;
import org.apache.phoenix.scanattributes.MetaDataProtocol;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change not needed

@@ -64,6 +62,7 @@
import org.apache.phoenix.jdbc.PhoenixConnection;
import org.apache.phoenix.query.ConnectionQueryServices;
import org.apache.phoenix.query.KeyRange;
import org.apache.phoenix.scanattributes.MetaDataProtocol;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change not needed

import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_INDEX_ID_BYTES;
import static org.apache.phoenix.jdbc.PhoenixDatabaseMetaData.VIEW_INDEX_ID_DATA_TYPE_BYTES;
import static org.apache.phoenix.query.QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES;
import static org.apache.phoenix.scanattributes.MetaDataProtocol.MIN_SPLITTABLE_SYSTEM_CATALOG;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change not needed

import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.phoenix.query.QueryConstants;

public class IndexerStatic {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move to IndexUtil or rename to IndexerUtil ?

@Aarchy Aarchy force-pushed the client branch 2 times, most recently from c4d3811 to a9c41e1 Compare October 9, 2023 10:06
@Aarchy Aarchy requested a review from stoty October 9, 2023 11:10
@stoty
Copy link
Contributor

stoty commented Oct 10, 2023

This looks OK to me.
I will invite the community for review.

@stoty
Copy link
Contributor

stoty commented Oct 10, 2023

Can you rebase to the current master (unfortunately a few more rebases will likely be needed while the discussion is ongoing) ?
You may also want to squash the commits.

@stoty
Copy link
Contributor

stoty commented Oct 10, 2023

I see you haven't touched phoenix-client.
While the ultimate goal is to have a slimmer client, we plan to make a new artifact for that.
For now, phoenix-client should depend on phoenix-coprocessor, so it is basically unchanged.

@Aarchy Aarchy marked this pull request as ready for review October 18, 2023 09:01
@stoty
Copy link
Contributor

stoty commented Nov 20, 2023

Unfortunately the Zookeeperless code made another large-ish rebase necessary.

@Aarchy Aarchy force-pushed the client branch 2 times, most recently from 7f95ac4 to 40c2c20 Compare November 20, 2023 15:14
Copy link
Contributor

@richardantal richardantal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is huge, I tried to check it reasonably thorough but there might be things that I missed.
The change looks mostly good I only left some minor comments on it.

</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that it was moved from the phoenix-core, correctly

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<phase>prepare-package
</phase>
<goals>
<goal>test-jar</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>org.apache.phoenix.util.GeneratePerformanceData</mainClass>
</manifest>
</archive>
</configuration>
</execution>
</executions>
<configuration>
<!-- Exclude these 2 packages, because their dependency _binary_ files
include the sources, and Maven 2.2 appears to add them to the sources to compile,
weird -->
<excludes>
<exclude>org/apache/jute/**</exclude>
<exclude>org/apache/zookeeper/**</exclude>
<exclude>**/*.jsp</exclude>
<exclude>log4j.properties</exclude>
</excludes>
</configuration>
</plugin>

But I am not sure if we need this maven-jar-plugin, we could check if it can be removed

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure either, but I think this should be investigated in a separate issue.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that we should not do it as part of this ticket.

</dependency>
<dependency>
<groupId>com.github.stephenc.findbugs</groupId>
<artifactId>findbugs-annotations</artifactId>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This dependency is duplicated it is there in line 128 too

</dependency>


<!-- Other dependencies -->
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The order of these dependencies are different than the it was originally in the phoenix-core, making it hard to compare.

@@ -210,7 +210,7 @@ public InternalScanner preCompact(ObserverContext<RegionCoprocessorEnvironment>
InternalScanner s, ScanType scanType, CompactionLifeCycleTracker tracker,
CompactionRequest request) throws IOException {

if (!IndexUtil.isLocalIndexStore(store)) { return s; }
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why can't we keep this function in IndexUtil?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think Store is defined in hbase-server package, IndexUtil is in phoenix-core. We want to break (phoenix-core -> hbase-server) dependency so this function needs to be moved. As its only used in this file, which is indeed in pheonix-coprocessors (which can use hbase-server), I moved it here.

indexMaintainer.deleteRowIfAgedEnough(indexRowKey, indexRow.get(0).getTimestamp(),
ageThreshold, false, region);
if (indexMaintainer.isAgedEnough(ts, ageThreshold)) {
region.delete(indexMaintainer.createDelete(indexRowKey, ts, false));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are the differences between region.delete and region.batchMutate(mutations); ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to hbase documentation:

batchMutate: Perform a batch of mutations. Note this supports only Put and Delete mutations and will ignore other types passed.

delete: Deletes the specified cells/row.

In this specific case the batch contained only 1 delete, so changing it to a single delete operation should do the same.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yep, that is right, that should do the same.
I was curious if you know if there is some performance difference between the 2.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose that possibly could differ between implementations, but HRegion just calls batchMutate in delete if I'm not mistaken.

@@ -302,6 +298,37 @@ enum JoinType {INNER, LEFT_OUTER}
int DIVERGED_VIEW_BASE_COLUMN_COUNT = -100;
int BASE_TABLE_BASE_COLUMN_COUNT = -1;

// String constants for the server side class names, so that we don't need the server jar
// on the client side
final String METADATASPLITPOLICY_CLASSNAME = "org.apache.phoenix.schema.MetaDataSplitPolicy";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use underscore to make these 4 variable more readable

} catch (SQLException e) {
throw new IOException(e);
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not happy that the order of these function changed.

+ PhoenixRuntime.JDBC_PROTOCOL_SEPARATOR + zkClientPort
+ PhoenixRuntime.JDBC_PROTOCOL_SEPARATOR + zkParentNode;
}
//TODO
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did it got copied to somewhere or what is pending here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no idea, we should leave this function alone.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I think I know what happened here.
This function depends on hbase-server which we don't want in phoenix-core. So it should be moved somewhere else, but this fn is not used anywhere. So probably we could just delete it. What do you think?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dead functions can be removed.

@@ -1260,7 +1261,7 @@ private void validatePropertyOnViewIndex(String viewName, String viewIndexName,
PhoenixConnection phxConn = conn.unwrap(PhoenixConnection.class);
PTable viewIndex = phxConn.getTable(new PTableKey(phxConn.getTenantId(), viewIndexName));
assertEquals("USE_STATS_FOR_PARALLELIZATION property set incorrectly", useStats,
PhoenixConfigurationUtil
ScanUtil
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can write this to one line

@@ -45,13 +45,13 @@ public class ServerUtilTest {
@Test
public void testIsHbaseNamespaceAvailableWithExistingNamespace() throws Exception {
Admin mockAdmin = getMockedAdmin();
assertTrue(ServerUtil.isHBaseNamespaceAvailable(mockAdmin, existingNamespaceOne));
assertTrue(ClientUtil.isHBaseNamespaceAvailable(mockAdmin, existingNamespaceOne));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is bit weird calling ClientUtil in ServerUtilTest

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phoenix server side is a superset of client side.
But this could be split to a separate test class.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fortunately this test class only contains tests for ClientUtil, so I will just rename it to ClientUtilTest.

@Aarchy Aarchy force-pushed the client branch 2 times, most recently from 79c6f0e to 00ff1da Compare December 1, 2023 14:05
@Aarchy
Copy link
Contributor Author

Aarchy commented Dec 1, 2023

@richardantal updated the PR based on your comments.
Thank you for taking time to review this huge patch, really appreciate the feedback!

Copy link
Contributor

@richardantal richardantal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for doing this change.
I really appreciate the effort that went into this one.
Keep up the fantastic work.

Copy link
Contributor

@stoty stoty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Phoenix-server is broken.
You need to add the phoenix-coprocessors dependency (or rather replace the phoenix-core dependency with phoenix-coprocessors which should pull in core transitively)

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

Edit: not needed, do as you prefer:

I suggested moving BaseIndexCodec one package higher, but now I see that it was unneccessary.
Can you move it back ? Sorry for flip-flopping.

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

ServerIndexUtil and ServerViewUtil get added to phoenix-client-embedded.
I'm trying to figure out why.

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

ServerIndexUtil and ServerViewUtil get added to phoenix-client-embedded because we depend on phoenix-coprocessors for compatibility reasons. So that's fine.

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

I have also renamed the ticket, so please update the commit message to the new name as well.

@Aarchy
Copy link
Contributor Author

Aarchy commented Dec 4, 2023

@stoty Added phoenix-coprocessors dependency to phoenix-server and modified the commit msg.

@Aarchy Aarchy changed the title PHOENIX-6053 Use shaded hadoop-client and hbase-shaded-client in phoenix-client PHOENIX-6053 Split Server Side Code into a Separate Module Dec 4, 2023
@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

I got this error when running mvn install.

[INFO] --- maven-dependency-plugin:3.1.1:analyze-only (enforce-dependencies) @ phoenix-tests ---
[WARNING] Used undeclared dependencies found:
[WARNING] org.apache.zookeeper:zookeeper-jute:jar:3.5.7:compile
[INFO] ------------------------------------------------------------------------

Test dependencies are not transitive, you need to add everything that phoenix-core depends on.
(Or just add phoenix-core as a non-test dependency)

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

Come to think of it, we should do this properly.
Remove the transitive dependencies from phoenix-tests, and set the phoenix-core dependency to compile.
You may have to add an exclusion for this in the maven-dependency-plugin config

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

Ignore my previous comment, I was wrong.

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

The dependency-plugin will warn about all undefined dependencies, it explicitly doesn't want to see transitive dependencies.

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

We could in fact change the scope to test for most dependencies.

@stoty
Copy link
Contributor

stoty commented Dec 4, 2023

You only need to add the zookeeper-jute dependency

@Aarchy
Copy link
Contributor Author

Aarchy commented Dec 5, 2023

Weird, if I add zookeeper-jute I get the following error:

[INFO] --- dependency:3.1.1:analyze-only (enforce-dependencies) @ phoenix-tests ---
[WARNING] Unused declared dependencies found:
[WARNING] org.apache.zookeeper:zookeeper-jute:jar:3.5.7:test

@stoty
Copy link
Contributor

stoty commented Dec 5, 2023

It depends on the java version.
Java 11 fails with "Used undeclared dependencies found:"

But if we add it, then Java 8 fails with "Unused declared dependencies found:"

Please add the exclusion both ways into the maven-dependency-plugin config, with a comment explaining the situation.

@Aarchy
Copy link
Contributor Author

Aarchy commented Dec 5, 2023

Do we need to add two way exclusion?
I suppose just one of these warnings is right, so wouldn't it be better to just add exclusion for the faulty case? This way, at least the declared dependencies would be correct.

@stoty
Copy link
Contributor

stoty commented Dec 5, 2023

That's also fine.

I have disassembled tests, and even though there is no include for zookeeper-jute, it does in fact call a method whoose return value is defined in zk-jute.

Why this is dependent on java version is beyond me.

@Aarchy
Copy link
Contributor Author

Aarchy commented Dec 5, 2023

@stoty I've added the zk-jute dependency and also the exclusion.

@stoty
Copy link
Contributor

stoty commented Dec 5, 2023

Thank you, @Aarchy .

@stoty
Copy link
Contributor

stoty commented Dec 5, 2023

As discussed ofline, we have found a more compatible module naming scheme:
phoenix-core -> phoenix-core-client
phoenix-coprocessors -> phoenix-core-server
phoenix-test > phoenix-core (the original module)

phoenix-core depends on phoenix-core-server and phoenix-server-client, and includes all the tests.

This maximizes compatbility with existing maven consumers and downstream projects.

@stoty
Copy link
Contributor

stoty commented Dec 6, 2023

We can put phoenix-core-client and phoenix-core-server under the phoenix-core directory, or we can have a flat directory structure, I don't really have a preference.

@stoty
Copy link
Contributor

stoty commented Dec 6, 2023

You also need adopt (or rather revert) phoenix-sandbox.py to these changes.

Copy link
Contributor

@stoty stoty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 LGTM

Copy link
Contributor

@stoty stoty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-1 I looked into the the Apache CI tests,and every single one has timed out.
Need to dig into that before merging.

@stoty
Copy link
Contributor

stoty commented Dec 7, 2023

WALRecoveryRegionPostOpenIT is hanging (at least in the latest run)

@stoty
Copy link
Contributor

stoty commented Dec 7, 2023

The hang is definielty caused by this patch.
Maybe a bad merge ?

@stoty
Copy link
Contributor

stoty commented Dec 7, 2023

So I have confirmed that the hang is caused by this patch. The test ran fine more than five times in a row without the patch, but failed every time I tried with the patch.

It doesn't seem to be a problem with the test code itself, so the patch must have introduced some other error, which causes the hang.

Now we just need to figure out which one of the 1300 changed files went wrong.

@Aarchy
Copy link
Contributor Author

Aarchy commented Dec 11, 2023

@stoty Thanks for pointing this out and the offline help as well.
There were two enableIndexing functions (one in Indexer.java and another one in IndexRegionObserver.java) but they set different coprocessors. I missed it, and just kept the IndexRegionObserver version in IndexerUtil. Changing it to use the correct coprocessors fixed the issue.

@stoty stoty closed this Dec 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants