abeliangroupie opened a new issue, #19721:
URL: https://github.com/apache/pulsar/issues/19721

   ### Search before asking
   
   - [X] I searched in the [issues](https://github.com/apache/pulsar/issues) 
and found nothing similar.
   
   
   ### Version
   
   **OS version:** Ubuntu 22.04
   **Pulsar version:** 2.11.0 (using apachepulsar/pulsar-all:2.11.0 Docker 
image)
   
   ### Minimal reproduce step
   
   Run 2.11.0 standalone:
   
   ```
   $ docker run -it apachepulsar/pulsar:2.11.0 bin/pulsar standalone
   ```
   
   Go into the container and create an arbitrary Pulsar function 
`test_function.py`.
   
   Then register it:
   
   ```
   $ bin/pulsar-admin functions create \
     --py test_function.py \
     --classname test_function.ExamplePulsarFunction \
     --tenant public \
     --namespace default \
     --name test-function \
     --inputs persistent://public/default/test-input-topic \
     --output persistent://public/default/test-output-topic
   Created successfully
   ```
   
   Now try to update it:
   
   ```
   $ bin/pulsar-admin functions update \
     --py test_function.py \
     --classname test_function.ExamplePulsarFunction \
     --tenant public \
     --namespace default \
     --name test-function \
     --inputs persistent://public/default/test-input-topic \
     --output persistent://public/default/test-output-topic
   ```
   
   ### What did you expect to see?
   
   I'd expect to see the `Updated successfully` message from updating a Pulsar 
function.
   
   ### What did you see instead?
   
   I get the error
   
   ```
   Package 'function://public/default/test-function@0' metadata already exists`.
   ```
   
   The logs look a bit like this:
   
   ```
   2023-03-06T06:34:58,426+0000 [pulsar-web-38-2] ERROR 
org.apache.pulsar.functions.worker.rest.api.FunctionsImpl - Failed process 
Function public/default/test-function package: 
   org.apache.pulsar.client.admin.PulsarAdminException$NotFoundException: 
Package 'function://public/default/test-function@0' metadata already exists
           at 
org.apache.pulsar.client.admin.PulsarAdminException.wrap(PulsarAdminException.java:252)
 ~[org.apache.pulsar-pulsar-client-admin-api-2.11.0.jar:2.11.0]
           at 
org.apache.pulsar.client.admin.internal.BaseResource.sync(BaseResource.java:316)
 ~[org.apache.pulsar-pulsar-client-admin-original-2.11.0.jar:2.11.0]
           at 
org.apache.pulsar.client.admin.internal.PackagesImpl.upload(PackagesImpl.java:90)
 ~[org.apache.pulsar-pulsar-client-admin-original-2.11.0.jar:2.11.0]
           at 
org.apache.pulsar.functions.worker.rest.api.ComponentImpl.getFunctionPackageLocation(ComponentImpl.java:411)
 ~[org.apache.pulsar-pulsar-functions-worker-2.11.0.jar:2.11.0]
           at 
org.apache.pulsar.functions.worker.rest.api.FunctionsImpl.updateFunction(FunctionsImpl.java:459)
 ~[org.apache.pulsar-pulsar-functions-worker-2.11.0.jar:2.11.0]
           at 
org.apache.pulsar.broker.admin.impl.FunctionsBase.updateFunction(FunctionsBase.java:326)
 ~[org.apache.pulsar-pulsar-broker-2.11.0.jar:2.11.0]
           at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method) ~[?:?]
           at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
 ~[?:?]
           at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
           ...
   ```
   
   ### Anything else?
   
   As far as I can tell `ComponentImpl.getFunctionPackageLocation()` is getting 
called when updating the Pulsar function, but when non-BookKeeper package 
management is being used (which is the case for standalone) it looks like 
`PackagesManagementImpl.upload()` happens, and that checks whether metadata 
exists or not + throws an error if it doesn't...
   
   ### Are you willing to submit a PR?
   
   - [ ] I'm willing to submit a PR!


-- 
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]

Reply via email to