jiangpengcheng opened a new issue, #23547: URL: https://github.com/apache/pulsar/issues/23547
### Search before asking - [X] I searched in the [issues](https://github.com/apache/pulsar/issues) and found nothing similar. ### Read release policy - [X] I understand that unsupported versions don't get bug fixes. I will attempt to reproduce the issue on a supported version of Pulsar client and Pulsar broker. ### Version use the apachepulsar/pulsar:4.0.0 image, image index digest is: sha256:51e92bc45ba495b9753585b12625579ddaeea8e02d08aecd336ceff26e1099f1 ### Minimal reproduce step 1. deploy pulsar using docker-compose, below is the compose yaml: ```yaml version: '3' networks: pulsar: driver: bridge services: # Start zookeeper zookeeper: image: apachepulsar/pulsar:4.0.0 container_name: zookeeper restart: on-failure networks: - pulsar volumes: - ./data/zookeeper:/pulsar/data/zookeeper environment: - metadataStoreUrl=zk:zookeeper:2181 - PULSAR_MEM=-Xms256m -Xmx256m -XX:MaxDirectMemorySize=256m command: > bash -c "bin/apply-config-from-env.py conf/zookeeper.conf && \ bin/generate-zookeeper-config.sh conf/zookeeper.conf && \ exec bin/pulsar zookeeper" healthcheck: test: ["CMD", "bin/pulsar-zookeeper-ruok.sh"] interval: 10s timeout: 5s retries: 30 # Init cluster metadata pulsar-init: container_name: pulsar-init hostname: pulsar-init image: apachepulsar/pulsar:4.0.0 networks: - pulsar command: > bin/pulsar initialize-cluster-metadata --cluster cluster-a --zookeeper zookeeper:2181 --configuration-store zookeeper:2181 --web-service-url http://broker:8080 --broker-service-url pulsar://broker:6650 depends_on: zookeeper: condition: service_healthy # Start bookie bookie: image: apachepulsar/pulsar:4.0.0 container_name: bookie restart: on-failure networks: - pulsar environment: - clusterName=cluster-a - zkServers=zookeeper:2181 - metadataServiceUri=metadata-store:zk:zookeeper:2181 # otherwise every time we run docker compose uo or down we fail to start due to Cookie # See: https://github.com/apache/bookkeeper/blob/405e72acf42bb1104296447ea8840d805094c787/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/Cookie.java#L57-68 - advertisedAddress=bookie - BOOKIE_MEM=-Xms512m -Xmx512m -XX:MaxDirectMemorySize=256m depends_on: zookeeper: condition: service_healthy pulsar-init: condition: service_completed_successfully # Map the local directory to the container to avoid bookie startup failure due to insufficient container disks. volumes: - ./data/bookkeeper:/pulsar/data/bookkeeper command: bash -c "bin/apply-config-from-env.py conf/bookkeeper.conf && exec bin/pulsar bookie" # Start broker broker: image: apachepulsar/pulsar:4.0.0 container_name: broker hostname: broker restart: on-failure networks: - pulsar environment: - metadataStoreUrl=zk:zookeeper:2181 - zookeeperServers=zookeeper:2181 - clusterName=cluster-a - managedLedgerDefaultEnsembleSize=1 - managedLedgerDefaultWriteQuorum=1 - managedLedgerDefaultAckQuorum=1 - advertisedAddress=broker - advertisedListeners=external:pulsar://127.0.0.1:6650 - enablePackagesManagement=true - PULSAR_MEM=-Xms512m -Xmx512m -XX:MaxDirectMemorySize=256m depends_on: zookeeper: condition: service_healthy bookie: condition: service_started ports: - "6650:6650" - "8080:8080" command: bash -c "bin/apply-config-from-env.py conf/broker.conf && exec bin/pulsar broker" ``` 2. generate a 500MB file: ``` dd if=/dev/zero of=500MB_file bs=1M count=500 ``` 3. upload this file to package service: ``` azureuser@dev-machie:~/pulsar$ ./bin/pulsar-admin packages upload --path ~/500MB_file --description "testing" function://public/default/test500 ``` ### What did you expect to see? ``` The package 'function://public/default/test500' uploaded from path '/home/azureuser/500MB_file' successfully ``` ### What did you see instead? ``` null Reason: java.util.concurrent.CompletionException: java.util.concurrent.TimeoutException: Read timeout to localhost/127.0.0.1:8080 after 60000 ms ``` ### Anything else? The reason is that the `DLOutputStream` will read 8192 bytes each time, and write them to bk, so for a 500 MB file, it will write: 500 * 1024 * 1024 / 8192.0 = 64000.0 times which leads to timeout ### Are you willing to submit a PR? - [X] 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]
