ctubbsii commented on a change in pull request #1907:
URL: https://github.com/apache/accumulo/pull/1907#discussion_r570250903



##########
File path: test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java
##########
@@ -162,7 +163,7 @@ public void checkHasMain() {
     expectSet.add(Info.class);
     expectSet.add(Initialize.class);
     expectSet.add(LoginProperties.class);
-    expectSet.add(Master.class);
+    expectSet.add(Manager.class);

Review comment:
       This should remain pointed to `org.apache.accumulo.master.Master`, 
because it's checking that a `main` method isn't deleted, potentially breaking 
user scripts. However, because we launch the `Manager` using 
`KeywordExecutable`, it is not necessary for the new 
`org.apache.accumulo.manager.Manager` to have a `main` method.

##########
File path: core/src/main/thrift/manager.thrift
##########
@@ -213,7 +213,7 @@ service FateService {
 
 }
 
-service MasterClientService extends FateService {

Review comment:
       Will renaming this will break client-server compatibility between 2.0 
and 2.1, if it is not already broken?
   
   I'm okay if we draw a line in the sand and say that 2.0 clients can't talk 
to 2.1, but I thought that there was some previous decisions made to try to 
preserve that to some extent, and I can't recall the details.

##########
File path: test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java
##########
@@ -162,7 +163,7 @@ public void checkHasMain() {
     expectSet.add(Info.class);
     expectSet.add(Initialize.class);
     expectSet.add(LoginProperties.class);
-    expectSet.add(Master.class);
+    expectSet.add(Manager.class);

Review comment:
       Yes. That is why the test existed. When I originally added the 
KeywordExecutable stuff, Eric had advocated for ensuring support for executing 
server processes directly with their own main methods (via `java 
path.to.actual.main.Class` or via `bin/accumulo path.to.actual.main.Class`), 
because that had previously worked, and some users may still be executing them 
that way.
   
   However, this would *only* apply to the old class names that previously 
existed with a main method, for backwards compatibility. Newer class names 
would not already be in use by users, so they don't need to be introduced with 
a main method, because there's no backwards compatibility argument to have one.
   
   In the end, this argument for backwards compatibility is pretty obscure. It 
is most likely that users are executing these with the scripts (which use our 
`start.Main keyword` entry points). So, if we decide to remove the main 
methods, that's fine... but it wouldn't make sense to rename the class in this 
test, since the only point of this test is to check backwards compatibility of 
the original class name having a main method.

##########
File path: test/src/main/java/org/apache/accumulo/test/start/KeywordStartIT.java
##########
@@ -162,7 +163,7 @@ public void checkHasMain() {
     expectSet.add(Info.class);
     expectSet.add(Initialize.class);
     expectSet.add(LoginProperties.class);
-    expectSet.add(Master.class);
+    expectSet.add(Manager.class);

Review comment:
       > Are you saying I should add an empty deprecated Master (in the old 
package) that extends Manager but has a main method in case a user invoked 
directly instead of via the accumulo scripts?
   
   Yes. That is why the test existed. When I originally added the 
KeywordExecutable stuff, Eric had advocated for ensuring support for executing 
server processes directly with their own main methods (via `java 
path.to.actual.main.Class` or via `bin/accumulo path.to.actual.main.Class`), 
because that had previously worked, and some users may still be executing them 
that way.
   
   However, this would *only* apply to the old class names that previously 
existed with a main method, for backwards compatibility. Newer class names 
would not already be in use by users, so they don't need to be introduced with 
a main method, because there's no backwards compatibility argument to have one.
   
   In the end, this argument for backwards compatibility is pretty obscure. It 
is most likely that users are executing these with the scripts (which use our 
`start.Main keyword` entry points). So, if we decide to remove the main 
methods, that's fine... but it wouldn't make sense to rename the class in this 
test, since the only point of this test is to check backwards compatibility of 
the original class name having a main method.

##########
File path: core/src/main/thrift/manager.thrift
##########
@@ -213,7 +213,7 @@ service FateService {
 
 }
 
-service MasterClientService extends FateService {

Review comment:
       Wire compatibility is definitely broken between 2.0 and 2.1 for 
server-to-server communication (preventing rolling upgrades, for example), but 
I don't know that we have any explicit check to determine client-to-server wire 
compatibility. So, it may or may not be broken. I'm not sure.
   
   I'm okay with breaking it... if we document that in the release notes. I 
just want to ensure we are noticing the consequences and accepting the risks as 
we go.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to