Skip to content

Commit b96658b

Browse files
committed
Fix the 404 issue
1 parent e036a4e commit b96658b

File tree

2 files changed

+14
-24
lines changed

2 files changed

+14
-24
lines changed

server/src/main/java/org/apache/gravitino/server/web/filter/GravitinoInterceptionService.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,11 @@
3737
import org.aopalliance.intercept.MethodInvocation;
3838
import org.apache.commons.lang3.StringUtils;
3939
import org.apache.gravitino.Entity;
40-
import org.apache.gravitino.GravitinoEnv;
4140
import org.apache.gravitino.MetadataObject;
4241
import org.apache.gravitino.NameIdentifier;
4342
import org.apache.gravitino.authorization.AuthorizationUtils;
4443
import org.apache.gravitino.exceptions.ForbiddenException;
45-
import org.apache.gravitino.exceptions.MetalakeNotInUseException;
4644
import org.apache.gravitino.exceptions.NoSuchMetalakeException;
47-
import org.apache.gravitino.metalake.MetalakeManager;
4845
import org.apache.gravitino.server.authorization.annotations.AuthorizationExpression;
4946
import org.apache.gravitino.server.authorization.annotations.AuthorizationRequest;
5047
import org.apache.gravitino.server.authorization.expression.AuthorizationExpressionEvaluator;
@@ -150,17 +147,13 @@ public Object invoke(MethodInvocation methodInvocation) throws Throwable {
150147
// Check metalake and user existence before authorization
151148
NameIdentifier metalakeIdent = metadataContext.get(Entity.EntityType.METALAKE);
152149
if (metalakeIdent != null) {
153-
try {
154-
MetalakeManager.checkMetalake(
155-
metalakeIdent, GravitinoEnv.getInstance().entityStore());
156-
} catch (NoSuchMetalakeException | MetalakeNotInUseException ex) {
157-
// If metalake doesn't exist or is not in use, return no auth response
158-
return buildNoAuthResponse(expressionAnnotation, metadataContext, method, expression);
159-
}
160-
161150
String currentUser = PrincipalUtils.getCurrentUserName();
162151
try {
163152
AuthorizationUtils.checkCurrentUser(metalakeIdent.name(), currentUser);
153+
} catch (NoSuchMetalakeException e) {
154+
LOG.warn(
155+
"Metalake {} does not exist when validating user {}", metalakeIdent, currentUser);
156+
return buildNoAuthResponse(expressionAnnotation, metadataContext, method, expression);
164157
} catch (ForbiddenException ex) {
165158
LOG.warn(
166159
"User validation failed - User: {}, Metalake: {}, Reason: {}",

server/src/test/java/org/apache/gravitino/server/web/filter/TestGravitinoInterceptionService.java

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.apache.gravitino.NameIdentifier;
3737
import org.apache.gravitino.UserPrincipal;
3838
import org.apache.gravitino.authorization.AuthorizationRequestContext;
39+
import org.apache.gravitino.authorization.AuthorizationUtils;
3940
import org.apache.gravitino.authorization.GravitinoAuthorizer;
4041
import org.apache.gravitino.authorization.Privilege;
4142
import org.apache.gravitino.dto.responses.ErrorResponse;
@@ -147,14 +148,12 @@ public void testSystemInternalErrorHandling() throws Throwable {
147148
}
148149

149150
@Test
150-
public void testMetalakeNotExistOrNotInUse() throws Throwable {
151+
public void testMetalakeNotExist() throws Throwable {
151152
try (MockedStatic<PrincipalUtils> principalUtilsMocked = mockStatic(PrincipalUtils.class);
152153
MockedStatic<GravitinoAuthorizerProvider> authorizerMocked =
153154
mockStatic(GravitinoAuthorizerProvider.class);
154-
MockedStatic<org.apache.gravitino.GravitinoEnv> envMocked =
155-
mockStatic(org.apache.gravitino.GravitinoEnv.class);
156-
MockedStatic<org.apache.gravitino.metalake.MetalakeManager> metalakeManagerMocked =
157-
mockStatic(org.apache.gravitino.metalake.MetalakeManager.class)) {
155+
MockedStatic<AuthorizationUtils> authorizationUtilsMocked =
156+
mockStatic(AuthorizationUtils.class)) {
158157

159158
principalUtilsMocked
160159
.when(PrincipalUtils::getCurrentPrincipal)
@@ -166,14 +165,12 @@ public void testMetalakeNotExistOrNotInUse() throws Throwable {
166165
authorizerMocked.when(GravitinoAuthorizerProvider::getInstance).thenReturn(mockedProvider);
167166
when(mockedProvider.getGravitinoAuthorizer()).thenReturn(new MockGravitinoAuthorizer());
168167

169-
GravitinoEnv mockEnv = mock(GravitinoEnv.class);
170-
EntityStore mockStore = mock(EntityStore.class);
171-
envMocked.when(GravitinoEnv::getInstance).thenReturn(mockEnv);
172-
when(mockEnv.entityStore()).thenReturn(mockStore);
173-
174-
// Mock MetalakeManager.checkMetalake to throw NoSuchMetalakeException
175-
metalakeManagerMocked
176-
.when(() -> MetalakeManager.checkMetalake(ArgumentMatchers.any(), ArgumentMatchers.any()))
168+
// Mock AuthorizationUtils.checkCurrentUser to throw NoSuchMetalakeException
169+
authorizationUtilsMocked
170+
.when(
171+
() ->
172+
AuthorizationUtils.checkCurrentUser(
173+
ArgumentMatchers.any(), ArgumentMatchers.any()))
177174
.thenThrow(new NoSuchMetalakeException("Metalake nonExistentMetalake does not exist"));
178175

179176
GravitinoInterceptionService gravitinoInterceptionService =

0 commit comments

Comments
 (0)