danhuawang opened a new issue, #10002:
URL: https://github.com/apache/gravitino/issues/10002
### What would you like to be improved?
Call REST API:
PUT
{{host}}/api/metalakes/:metalake/catalogs/:catalog/schemas/:schema/functions/:function
body:
```
{
"updates": [
{
"@type": "updateImpl",
"runtime": "SPARK",
"implementation": {
"handler": "add_o",
"codeBlock": "def add_o(x):\n return x + 1",
"runtime": "SPARK",
"language": "PYTHON",
"properties": {
}
},
"parameters": [
{
"name": "x",
"dataType": "integer"
}
]
}
]
}
```
The response message is as following, but actually runtime 'SPARK' exists.
The real reason is the `dataType` in `parameters` is not the same in the
original function.
```
{
"code": 1001,
"type": "IllegalArgumentException",
"message": "Failed to operate function(s) [add_one] operation [ALTER]
under schema [func_schema], reason [Cannot update implementation: runtime
'SPARK' not found in the definition]",
"stack": [
"java.lang.IllegalArgumentException: Cannot update implementation:
runtime 'SPARK' not found in the definition",
"\tat
org.apache.gravitino.catalog.ManagedFunctionOperations.updateImplInDefinition(ManagedFunctionOperations.java:508)",
"\tat
org.apache.gravitino.catalog.ManagedFunctionOperations.applyChanges(ManagedFunctionOperations.java:260)",
"\tat
org.apache.gravitino.catalog.ManagedFunctionOperations.lambda$alterFunction$3(ManagedFunctionOperations.java:135)",
"\tat
org.apache.gravitino.storage.relational.service.FunctionMetaService.updateFunction_aroundBody14(FunctionMetaService.java:214)",
"\tat
org.apache.gravitino.storage.relational.service.FunctionMetaService.updateFunction_aroundBody15$advice(FunctionMetaService.java:73)",
"\tat
org.apache.gravitino.storage.relational.service.FunctionMetaService.updateFunction(FunctionMetaService.java:1)",
"\tat
org.apache.gravitino.storage.relational.JDBCBackend.update(JDBCBackend.java:257)",
"\tat
org.apache.gravitino.storage.relational.RelationalEntityStore.update(RelationalEntityStore.java:136)",
"\tat
org.apache.gravitino.catalog.ManagedFunctionOperations.alterFunction(ManagedFunctionOperations.java:131)",
"\tat
org.apache.gravitino.catalog.FunctionOperationDispatcher.lambda$alterFunction$5(FunctionOperationDispatcher.java:168)",
"\tat
org.apache.gravitino.lock.TreeLockUtils.doWithTreeLock(TreeLockUtils.java:49)",
"\tat
org.apache.gravitino.catalog.FunctionOperationDispatcher.alterFunction(FunctionOperationDispatcher.java:167)",
"\tat
org.apache.gravitino.catalog.FunctionNormalizeDispatcher.alterFunction(FunctionNormalizeDispatcher.java:87)",
"\tat
org.apache.gravitino.server.web.rest.FunctionOperations.lambda$alterFunction$5(FunctionOperations.java:218)",
"\tat
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)",
"\tat java.base/javax.security.auth.Subject.doAs(Subject.java:439)",
"\tat
org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44)",
"\tat org.apache.gravitino.server.web.Utils.doAs(Utils.java:202)",
"\tat
org.apache.gravitino.server.web.rest.FunctionOperations.alterFunction(FunctionOperations.java:208)",
"\tat
org.apache.gravitino.server.web.rest.FunctionOperations_$$_jvsta05_9._d1alterFunction(FunctionOperations_$$_jvsta05_9.java)",
"\tat jdk.internal.reflect.GeneratedMethodAccessor219.invoke(Unknown
Source)",
"\tat
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)",
"\tat
org.glassfish.hk2.utilities.reflection.ReflectionHelper.invoke(ReflectionHelper.java:1268)",
"\tat
org.jvnet.hk2.internal.MethodInterceptorHandler$MethodInvocationImpl.proceed(MethodInterceptorHandler.java:164)",
"\tat
org.apache.gravitino.server.web.filter.GravitinoInterceptionService$MetadataAuthorizationMethodInterceptor.invoke(GravitinoInterceptionService.java:208)",
"\tat
org.jvnet.hk2.internal.MethodInterceptorHandler.invoke(MethodInterceptorHandler.java:97)",
"\tat
org.apache.gravitino.server.web.rest.FunctionOperations_$$_jvsta05_9.alterFunction(FunctionOperations_$$_jvsta05_9.java)",
"\tat jdk.internal.reflect.GeneratedMethodAccessor218.invoke(Unknown
Source)",
"\tat
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)",
"\tat java.base/java.lang.reflect.Method.invoke(Method.java:568)",
"\tat
org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)",
"\tat
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)",
"\tat
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)",
"\tat
org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)",
"\tat
org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)",
"\tat
org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)",
"\tat
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)",
"\tat
org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)",
"\tat
org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)",
"\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)",
"\tat org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)",
"\tat org.glassfish.jersey.internal.Errors.process(Errors.java:292)",
"\tat org.glassfish.jersey.internal.Errors.process(Errors.java:274)",
"\tat org.glassfish.jersey.internal.Errors.process(Errors.java:244)",
"\tat
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)",
"\tat
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)",
"\tat
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)",
"\tat
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)",
"\tat
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)",
"\tat
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358)",
"\tat
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:311)",
"\tat
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)",
"\tat
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)",
"\tat
org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)",
"\tat
org.apache.gravitino.server.authentication.AuthenticationFilter.lambda$doFilter$0(AuthenticationFilter.java:89)",
"\tat
java.base/java.security.AccessController.doPrivileged(AccessController.java:712)",
"\tat java.base/javax.security.auth.Subject.doAs(Subject.java:439)",
"\tat
org.apache.gravitino.utils.PrincipalUtils.doAs(PrincipalUtils.java:44)",
"\tat
org.apache.gravitino.server.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:86)",
"\tat
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
"\tat
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
"\tat
org.apache.gravitino.server.web.VersioningFilter.doFilter(VersioningFilter.java:111)",
"\tat
org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
"\tat
org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
"\tat
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
"\tat
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)",
"\tat
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)",
"\tat
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)",
"\tat
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)",
"\tat
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)",
"\tat
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)",
"\tat
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)",
"\tat
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
"\tat
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)",
"\tat
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
"\tat org.eclipse.jetty.server.Server.handle(Server.java:516)",
"\tat
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)",
"\tat
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)",
"\tat
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)",
"\tat
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)",
"\tat
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)",
"\tat
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)",
"\tat
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)",
"\tat
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)",
"\tat
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)",
"\tat java.base/java.lang.Thread.run(Thread.java:840)"
]
}
```
### How should we improve?
Shall we tell the user the real `IllegalArgumentException` reason in the
response message?
--
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.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]