[ 
https://issues.apache.org/jira/browse/HADOOP-18691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17712652#comment-17712652
 ] 

ASF GitHub Bot commented on HADOOP-18691:
-----------------------------------------

steveloughran commented on code in PR #5540:
URL: https://github.com/apache/hadoop/pull/5540#discussion_r1167526769


##########
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIdentityProviders.java:
##########
@@ -61,7 +63,7 @@ public void testPluggableIdentityProvider() {
       CommonConfigurationKeys.IPC_IDENTITY_PROVIDER_KEY,
       IdentityProvider.class);
 
-    assertTrue(providers.size() == 1);
+    assertEquals(1, providers.size());

Review Comment:
   use assertJ 
   ```
   assertThat(providers)
   .describedAs("provider list")
   .hasSize(1);
   ```



##########
hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/TestIdentityProviders.java:
##########
@@ -71,12 +73,20 @@ public void testPluggableIdentityProvider() {
   @Test
   public void testUserIdentityProvider() throws IOException {
     UserIdentityProvider uip = new UserIdentityProvider();
-    String identity = uip.makeIdentity(new FakeSchedulable());
+    FakeSchedulable fakeSchedulable = new FakeSchedulable();
+    String identity = uip.makeIdentity(fakeSchedulable);
 
     // Get our username
     UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
     String username = ugi.getUserName();
 
     assertEquals(username, identity);
+
+    // FakeSchedulable doesn't override getCallerContext()
+    // accessing it should throw a NotImplementedException
+    NotImplementedException nie = assertThrows(

Review Comment:
   our own LambdaTestUtils.intercept() does this with better reporting of 
mismatch, including rethrowing the failing exception if there's no string match



##########
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Schedulable.java:
##########
@@ -29,5 +30,9 @@
 public interface Schedulable {
   public UserGroupInformation getUserGroupInformation();
 
+  default CallerContext getCallerContext() {
+    throw new NotImplementedException("Code is not implemented");

Review Comment:
   i worry about exposing commons.* classes in an API, as if we change what is 
raised external code may break. Just raise java's UnsupportedOperationException 
and mention this may happen in the javadocs



##########
hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc/Schedulable.java:
##########
@@ -29,5 +30,9 @@
 public interface Schedulable {
   public UserGroupInformation getUserGroupInformation();
 
+  default CallerContext getCallerContext() {

Review Comment:
   javadocs, even if the rest of the interface left them out





> Add a CallerContext getter on the Schedulable interface
> -------------------------------------------------------
>
>                 Key: HADOOP-18691
>                 URL: https://issues.apache.org/jira/browse/HADOOP-18691
>             Project: Hadoop Common
>          Issue Type: Improvement
>            Reporter: Christos Bisias
>            Priority: Major
>              Labels: pull-request-available
>
> We would like to add a default *{color:#00875a}CallerContext{color}* getter 
> on the *{color:#00875a}Schedulable{color}* interface
> {code:java}
> default public CallerContext getCallerContext() {
>   return null;  
> } {code}
> and then override it on the 
> *{color:#00875a}i{color}{color:#00875a}{*}pc/{*}Server.Call{color}* class
> {code:java}
> @Override
> public CallerContext getCallerContext() {  
>   return this.callerContext;
> } {code}
> to expose the already existing *{color:#00875a}callerContext{color}* field.
>  
> This change will help us access the *{color:#00875a}CallerContext{color}* on 
> an Apache Ozone *{color:#00875a}IdentityProvider{color}* implementation.
> On Ozone side the *{color:#00875a}FairCallQueue{color}* doesn't work with the 
> Ozone S3G, because all users are masked under a special S3G user and there is 
> no impersonation. Therefore, the FCQ reads only 1 user and becomes 
> ineffective. We can use the *{color:#00875a}CallerContext{color}* field to 
> store the current user and access it on the Ozone 
> {*}{color:#00875a}IdentityProvider{color}{*}.
>  
> This is a presentation with the proposed approach.
> [https://docs.google.com/presentation/d/1iChpCz_qf-LXiPyvotpOGiZ31yEUyxAdU4RhWMKo0c0/edit#slide=id.p]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to