1. 07 12月, 2019 1 次提交
    • C
      Modify the logical in producer carry a schema to connect broker with... · c848103d
      congbo 提交于
      Modify the logical in producer carry a schema to connect broker with isAllowAutoUpdateSchema.  (#5782)
      
      ### Motivation
      Now, the logical is if isAllowAutoUpdateSchema = false, producer can't connect broker. So modify the logical, when isAllowAutoUpdateSchema = false, the first to check the schema whether is registered.
      
      ### Verifying this change
      Add the tests for it
      c848103d
  2. 06 12月, 2019 5 次提交
  3. 04 12月, 2019 4 次提交
  4. 03 12月, 2019 2 次提交
  5. 02 12月, 2019 5 次提交
  6. 30 11月, 2019 3 次提交
  7. 29 11月, 2019 6 次提交
    • T
      [website]Add content of pulsar-manager in website(include release notes, download link) (#5741) · e4fc6098
      tuteng 提交于
      ### Motivation
      
      As a sub-project of the pulsar, pulsar-manager should update relevant content on the website after the first release is completed, so as to facilitate users' use.
      
      ### Modifications
      
      * Add pulsar-manager release notes page
      * Add pulsar-manager download page
      * Add a document in sidebar
      
      ### Verifying this change
      
      yarn build pass
      e4fc6098
    • L
      Add document for sticky consumer (#5745) · d9c2b8b6
      lipenghui 提交于
      *Motivation*
      
      ManagedLedgerFactoryChangeLedgerPathTest sets the zk session timeout to 10 ms.
      
      10ms is too low for a zookeeper client to connect to the zookeeper server.
      
      *Modifications*
      
      Remove zkSessionTimeout and use the default
      d9c2b8b6
    • S
      [tests] ManagedLedgerFactoryChangeLedgerPathTest is flaky (#5766) · ae59d558
      Sijie Guo 提交于
      *Motivation*
      
      ManagedLedgerFactoryChangeLedgerPathTest sets the zk session timeout to 10 ms.
      
      10ms is too low for a zookeeper client to connect to the zookeeper server.
      
      *Modifications*
      
      Remove zkSessionTimeout and use the default
      ae59d558
    • L
      Fix NPE when send a large message and don't release... · ecf77921
      lipenghui 提交于
      Fix NPE when send a large message and don't release batchedMessageMetadataAndPayload when discard in batch message container. (#5748)
      
      Fixes #5746 #5747
      
      ### Motivation
      
      Fix NPE and release an already released ByteBuf when publish an oversize message.
      
      Here is error log:
      ```
      io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
      	at io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:74) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
      	at io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:138) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
      	at io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:100) ~[netty-buffer-4.1.43.Final.jar:4.1.43.Final]
      	at io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:88) ~[netty-common-4.1.43.Final.jar:4.1.43.Final]
      	at io.netty.util.ReferenceCountUtil.safeRelease(ReferenceCountUtil.java:113) [netty-common-4.1.43.Final.jar:4.1.43.Final]
      	at org.apache.pulsar.client.impl.BatchMessageKeyBasedContainer$KeyedBatch.discard(BatchMessageKeyBasedContainer.java:244) [classes/:?]
      	at org.apache.pulsar.client.impl.BatchMessageKeyBasedContainer.createOpSendMsg(BatchMessageKeyBasedContainer.java:125) [classes/:?]
      	at org.apache.pulsar.client.impl.BatchMessageKeyBasedContainer.createOpSendMsgs(BatchMessageKeyBasedContainer.java:145) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerImpl.batchMessageAndSend(ProducerImpl.java:1426) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerImpl.triggerFlush(ProducerImpl.java:1411) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:112) [classes/:?]
      	at org.apache.pulsar.client.impl.TypedMessageBuilderImpl.send(TypedMessageBuilderImpl.java:89) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:63) [classes/:?]
      	at org.apache.pulsar.broker.service.BatchMessageTest.testSendOverSizeMessage(BatchMessageTest.java:875) [test-classes/:?]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
      	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) [testng-6.14.3.jar:?]
      	at org.testng.internal.Invoker.invokeMethod(Invoker.java:583) [testng-6.14.3.jar:?]
      	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719) [testng-6.14.3.jar:?]
      	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989) [testng-6.14.3.jar:?]
      	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) [testng-6.14.3.jar:?]
      	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) [testng-6.14.3.jar:?]
      	at org.testng.TestRunner.privateRun(TestRunner.java:648) [testng-6.14.3.jar:?]
      	at org.testng.TestRunner.run(TestRunner.java:505) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.run(SuiteRunner.java:364) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.runSuitesLocally(TestNG.java:1137) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.runSuites(TestNG.java:1049) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.run(TestNG.java:1017) [testng-6.14.3.jar:?]
      	at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73) [testng-plugin.jar:?]
      	at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123) [testng-plugin.jar:?]
      
      
      
      16:19:13.850 [main:org.apache.pulsar.client.impl.ProducerImpl@1439] WARN  org.apache.pulsar.client.impl.ProducerImpl - [persistent://prop/ns-abc/testSendOverSizeMessage-623833fc-d9f7-4b28-aead-27955928fae9] [test-0-0] error while create opSendMsg by batch message container
      java.lang.NullPointerException: null
      	at org.apache.pulsar.client.impl.ProducerImpl.releaseSemaphoreForSendOp(ProducerImpl.java:858) ~[classes/:?]
      	at org.apache.pulsar.client.impl.ProducerImpl.processOpSendMsg(ProducerImpl.java:1477) ~[classes/:?]
      	at org.apache.pulsar.client.impl.ProducerImpl.batchMessageAndSend(ProducerImpl.java:1432) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerImpl.triggerFlush(ProducerImpl.java:1411) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:112) [classes/:?]
      	at org.apache.pulsar.client.impl.TypedMessageBuilderImpl.send(TypedMessageBuilderImpl.java:89) [classes/:?]
      	at org.apache.pulsar.client.impl.ProducerBase.send(ProducerBase.java:63) [classes/:?]
      	at org.apache.pulsar.broker.service.BatchMessageTest.testSendOverSizeMessage(BatchMessageTest.java:875) [test-classes/:?]
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_201]
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_201]
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_201]
      	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_201]
      	at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124) [testng-6.14.3.jar:?]
      	at org.testng.internal.Invoker.invokeMethod(Invoker.java:583) [testng-6.14.3.jar:?]
      	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719) [testng-6.14.3.jar:?]
      	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989) [testng-6.14.3.jar:?]
      	at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125) [testng-6.14.3.jar:?]
      	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) [testng-6.14.3.jar:?]
      	at org.testng.TestRunner.privateRun(TestRunner.java:648) [testng-6.14.3.jar:?]
      	at org.testng.TestRunner.run(TestRunner.java:505) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.runTest(SuiteRunner.java:455) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunner.run(SuiteRunner.java:364) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) [testng-6.14.3.jar:?]
      	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.runSuitesLocally(TestNG.java:1137) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.runSuites(TestNG.java:1049) [testng-6.14.3.jar:?]
      	at org.testng.TestNG.run(TestNG.java:1017) [testng-6.14.3.jar:?]
      	at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:73) [testng-plugin.jar:?]
      	at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:123) [testng-plugin.jar:?]
      ```
      
      ### Modifications
      
      Add check for processOpSendMsg, if the op is null, just return.
      Don't release the batchedMessageMetadataAndPayload since it is already released in getCompressedBatchMetadataAndPayload() method.
      ecf77921
    • L
      Remove cursor while remove non-durable subscription (#5719) · 2e30c086
      lipenghui 提交于
      ### Motivation
      
      Remove cursor from cursors of managed ledger while remove non-durable subscription.  The data deletion is depends the mark delete position of all cursors, if left a unused cursor in the cursors of managed ledger, data can't be delete as expected.
      
      ### Modifications
      
      Remove cursor while remove non-durable subscription
      2e30c086
    • Y
      [Issue 3009][docs] Add presto sql REST APIs doc (#5376) · b23c7320
      Yong Zhang 提交于
      Fixes #3009
      
      *Motivation*
      
      There are no REST APIs usage docs for the presto SQL.
      b23c7320
  8. 28 11月, 2019 6 次提交
  9. 27 11月, 2019 5 次提交
    • B
      Fix documentation: how to start server for cpp tests (#5549) · e372cc9c
      Brian Candler 提交于
      ### Modifications
      
      Out-of-date instructions in pulsar-client-cpp/README.md about how to start test server
      e372cc9c
    • J
      init broker publish limitor at broker start time (#5754) · eee4d892
      Jia Zhai 提交于
      Broker publish limiter was not start at broker start time, and only init when dynamic system config happens. 
      This change init broker publish limiter at broker start time, and add a test for it.
      eee4d892
    • K
      Adding Spark example to Write Pojo classes to Stream (#5470) · a88300c4
      kishorebhat-p 提交于
      ### Motivation
      
      Added the class SensorReading and class ProducerSparkWithPojo  to showcase writing Pojo as Json Object to Pulsar Queue 
      
      ### Modifications
      
      Based on the documentation written example class to write Pojos to Pulsar 
      This might be more real life examples for application than bytes stream 
      a88300c4
    • J
      [Issue 5287][docs] Add documentation on how to configure multiple broker services (#5722) · 14f3eee3
      Jennifer Huang 提交于
      Fixes #5287 
      
      ### Motivation
      Users do not know how to specify cluster (multi broker/zk) connection for presto.
      
      ### Modifications
      Add content on how to configure multiple hosts for `pulsar.broker-service-url`.
      14f3eee3
    • B
      fix potential deadlock in pulsar client close (#5731) · f83793ee
      Boyang Jerry Peng 提交于
      # Motivation
      
      A deadlock on PulsarClient.close() can happen if there are producers/consumers that are not closed prior to calling PulsarClient.close() and we have to close them in the routine.  The deadlock happens be cause we piggy pack off of a "pulsar-io" thread that is used to shutdown the connection in producer/consumer close, to also shutdown the EventLoopGroup.  "pulsar-io" thread is part of the EventLoopGroup thus it tries to shutdown itself and causes a deadlock.  
      
      Below is a stacktrace of what it look like:
      
      ```
      "pulsar-client-io-1-1" #20 prio=5 os_prio=31 tid=0x00007fc312a78800 nid=0x9a03 in Object.wait() [0x000070000384e000]
         java.lang.Thread.State: WAITING (on object monitor)
          at java.lang.Object.wait(Native Method)
          - waiting on <0x00000007b8532640> (a io.netty.util.concurrent.DefaultPromise)
          at java.lang.Object.wait(Object.java:502)
          at io.netty.util.concurrent.DefaultPromise.await(DefaultPromise.java:252)
          - locked <0x00000007b8532640> (a io.netty.util.concurrent.DefaultPromise)
          at io.netty.util.concurrent.DefaultPromise.sync(DefaultPromise.java:403)
          at io.netty.util.concurrent.DefaultPromise.sync(DefaultPromise.java:35)
          at org.apache.pulsar.client.impl.ConnectionPool.close(ConnectionPool.java:286)
          at org.apache.pulsar.client.impl.PulsarClientImpl.shutdown(PulsarClientImpl.java:578)
          at org.apache.pulsar.client.impl.PulsarClientImpl.lambda$closeAsync$18(PulsarClientImpl.java:560)
          at org.apache.pulsar.client.impl.PulsarClientImpl$$Lambda$82/878861517.run(Unknown Source)
          at java.util.concurrent.CompletableFuture.uniRun(CompletableFuture.java:705)
          at java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:687)
          at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
          at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
          at org.apache.pulsar.client.impl.ProducerImpl.lambda$closeAsync$9(ProducerImpl.java:735)
          at org.apache.pulsar.client.impl.ProducerImpl$$Lambda$80/1123226989.apply(Unknown Source)
          at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:822)
          at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:797)
          at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:474)
          at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1962)
          at org.apache.pulsar.client.impl.ClientCnx.handleSuccess(ClientCnx.java:406)
          at org.apache.pulsar.common.protocol.PulsarDecoder.channelRead(PulsarDecoder.java:222)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
          at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:326)
          at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:300)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
          at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
          at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
          at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
          at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
          at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
          at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700)
          at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635)
          at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552)
          at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514)
          at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050)
          at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
          at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
          at java.lang.Thread.run(Thread.java:748)
      ```
      
      This deadlock went unnoticed for a long time because in the past we never waited for the shutdown of the EventLoopGroup to complete
      
      Also #5628 does not solve the issue.  This PR should supersede that one.
      f83793ee
  10. 26 11月, 2019 3 次提交
    • J
      Add publish rate limit for each broker to avoid OOM (#5710) · 9e7b9389
      Jia Zhai 提交于
      Fixes #5513 
      
      ### Motivation
      
      Through #3985, user could set the publish rate for each topic, but the topic number for each broker is not limited, so there is case that a lot of topics served in same broker, and if each topic send too many message, it will cause the messages not able to send to BookKeeper in time,  and messages be hold in the direct memory of broker, and cause Broker out of direct memory.
      
      ### Modifications
      
      - add broker publish rate limit base on #3985,
      - add unit test.
      
      ### Verifying this change
      unit test passed.
      9e7b9389
    • H
      fix setTxnidMostBits bug (#5743) · 48506e57
      hangc0276 提交于
      In TypedMessageBuilderImpl::beforeSend function, when setting TxnIdMostBits field of msgMetadataBuilder, it sets into TxnidLeastBits field and override the original TxnIdLeastBits value.
      48506e57
    • A
      Add right parenthesis for "(max size configurable" (#5744) · de2ff6b1
      atlantic2099 提交于
      Resolved issue #5728
      de2ff6b1