2018-07-24 18:21:27 UTC - Grant Wu: wait, why is this using `/lookup/v2` ---- 2018-07-24 18:21:30 UTC - Grant Wu: that just seems inconsistent ---- 2018-07-24 18:21:30 UTC - Grant Wu: <https://pulsar.incubator.apache.org/docs/latest/admin-api/persistent-topics/#Lookupoftopic-u27b2o> ---- 2018-07-24 18:25:02 UTC - Matteo Merli: Yes, it is inconsistent, but that’s because of a long story.
What became Pulsar was already the “v2” of another messaging system at Yahoo. That’s why the lookup handlers were already versioned. ---- 2018-07-24 18:26:06 UTC - Grant Wu: Oh, that’s awkward. ---- 2018-07-24 18:27:18 UTC - Grant Wu: Oh well. ---- 2018-07-24 18:27:34 UTC - Matteo Merli: We cannot remove that endpoint, but for Pulsar 2.x the endpoint for lookup was changed * Pulsar 1.x topics --> `lookup/v2/destination/....` * Pulsar 2.x topics --> `lookup/v2/topic/....` ---- 2018-07-24 18:27:55 UTC - Grant Wu: Yeah I need to work on that ---- 2018-07-24 18:29:01 UTC - Grant Wu: Unfortunately I don’t think my employer really understands the collaborative nature of open source, I have to work on everything not directly benefiting my employer on the side ---- 2018-07-24 18:30:32 UTC - Grant Wu: Oh, I did hit that already with <https://github.com/apache/incubator-pulsar/pull/2194/commits/62b8e583db6f627c187641d653568e84c22ac7e2#diff-419fb63e6ada59be8c403a2010e30920L560> ---- 2018-07-24 18:31:31 UTC - Matteo Merli: I see, then the ` +{% endpoint GET /lookup/v2/destination/persistent/:tenant:namespace/:topic %} ` needs to be ` /lookup/v2/topic/persistent/:tenant:namespace/:topic` ---- 2018-07-24 18:33:46 UTC - Grant Wu: oh ---- 2018-07-24 18:33:48 UTC - Grant Wu: noted ---- 2018-07-24 18:34:01 UTC - Grant Wu: also should there be a `/` between `:tenant` and `:namespace` ---- 2018-07-24 18:34:16 UTC - Matteo Merli: oh, true ---- 2018-07-24 18:34:39 UTC - Matteo Merli: thanks for reviewing and fixing all these docs ! ---- 2018-07-24 18:34:42 UTC - Grant Wu: I was planning on doing a full grep for `destination` later ---- 2018-07-24 18:35:03 UTC - Grant Wu: Yeah no problem ---- 2018-07-24 18:35:14 UTC - Grant Wu: Incidentally I have written a very barebones Javascript client (like, only supports exclusive subscriptions!) that uses the websocket transport ---- 2018-07-24 18:35:26 UTC - Grant Wu: I may someday convince my employer to release that ---- 2018-07-24 18:35:49 UTC - Grant Wu: The problem would be that features would get added as we need them, and we don’t really use very many features ---- 2018-07-24 18:36:15 UTC - Matteo Merli: yes, that would yield to a lot of results.. I did the conversion destination -> topic in a huge number of places several months ago — but many were left out. I would say docs are the most important — and in tests we shouldn’t worry too much ---- 2018-07-24 18:37:24 UTC - Grant Wu: can you look at that first question I asked yesterday that sijieg said they’d look at earlier? ---- 2018-07-24 18:37:48 UTC - Grant Wu: <https://pulsar.incubator.apache.org/docs/v2.0.1-incubating/reference/RestApi/#/admin/non-persistent/:property/:cluster/:namespace/:topic/subscription/:subscriptionName> the URL doesn’t seem to have a command o.o ---- 2018-07-24 18:40:00 UTC - Matteo Merli: true, let me check the code ---- 2018-07-24 18:42:41 UTC - Matteo Merli: This is the method to create a subscription through the REST API: ``` @PUT @Path("/{tenant}/{namespace}/{topic}/subscription/{subscriptionName}") @ApiOperation(value = "Reset subscription to message position closest to given position.", notes = "Creates a subscription on the topic at the specified message id") @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have admin permission"), @ApiResponse(code = 404, message = "Topic/Subscription does not exist"), @ApiResponse(code = 405, message = "Not supported for partitioned topics") }) public void createSubscription(@PathParam("tenant") String tenant, @PathParam("namespace") String namespace, @PathParam("topic") @Encoded String topic, @PathParam("subscriptionName") String subscriptionName, @QueryParam("authoritative") @DefaultValue("false") boolean authoritative, MessageIdImpl messageId) { validateTopicName(tenant, namespace, topic); internalCreateSubscription(subscriptionName, messageId, authoritative); } ``` ---- 2018-07-24 18:42:57 UTC - Matteo Merli: the doc there is wrong/misleading. ---- 2018-07-24 18:43:37 UTC - Matteo Merli: there is no action since this is a PUT operation on “subscription” resource. It takes a message Id and initialize the subscription on that message Id ---- 2018-07-24 18:44:13 UTC - Matteo Merli: ` @ApiOperation(value = "Reset subscription to message position closest to given position.", notes = "Creates a subscription on the topic at the specified message id")` should be changed into `@ApiOperation(value = "Creates a subscription on the topic at the specified message id")` ---- 2018-07-24 18:44:32 UTC - Grant Wu: where does the message ID get specified? ---- 2018-07-24 18:47:38 UTC - Matteo Merli: it’s defined at `org.apache.pulsar.client.impl.MessageIdImpl` as basically: ``` public class MessageIdImpl implements MessageId { protected final long ledgerId; protected final long entryId; protected final int partitionIndex; //… } ``` The body of request would contain the JSON version of that object ---- 2018-07-24 18:48:17 UTC - Grant Wu: Ah ---- 2018-07-24 18:48:28 UTC - Grant Wu: Should that be documented somewhere? ---- 2018-07-24 18:48:47 UTC - Grant Wu: Outside of the Java code, I mean ---- 2018-07-24 18:49:56 UTC - Matteo Merli: In theory the swagger generator should pick up the entities schema structures ---- 2018-07-24 18:51:21 UTC - Matteo Merli: but I’m not sure that’s happening correctly. Ideally we would have to add some examples on how to use the handler, in the swagger annotations, so that it will be included automatically. ---- 2018-07-24 18:52:24 UTC - Grant Wu: There is something very strange going on with the “Currently available routes” box at the top ---- 2018-07-24 18:58:42 UTC - Grant Wu: Also there is a PUT /admin/non-persistent/:tenant/:namespace/:topic/subscription/:subscriptionName and a PUT /admin/non-persistent/:property/:cluster/:namespace/:topic/subscription/:subscriptionName route with the same description on the same page ---- 2018-07-24 18:58:52 UTC - Grant Wu: :thinking_face: ---- 2018-07-24 19:02:07 UTC - Matteo Merli: Yes, in theory all the v1 apis should be hidden from docs at this point, to avoid confusion ---- 2018-07-24 19:02:19 UTC - Grant Wu: oh ---- 2018-07-24 19:02:20 UTC - Matteo Merli: I thought that was already the case ---- 2018-07-24 19:03:27 UTC - Matteo Merli: I remember using the `hidden=true` option to hide from swagger.. but it doesn’t seem to be there now ---- 2018-07-24 19:12:41 UTC - Grant Wu: how do we add `/v2` to the path ---- 2018-07-24 19:12:45 UTC - Grant Wu: in the swagger docs ---- 2018-07-24 19:12:47 UTC - Grant Wu: for the v2 APIs ---- 2018-07-24 19:15:26 UTC - Matteo Merli: FYI @chris has already started working on a revamping of the documantion website and the scripts to generate this ---- 2018-07-24 19:15:55 UTC - Matteo Merli: a PR went in already: <https://github.com/apache/incubator-pulsar/pull/2206> ---- 2018-07-24 19:16:06 UTC - Matteo Merli: and the staging website should be generated soon ---- 2018-07-24 19:16:32 UTC - Grant Wu: uh. ---- 2018-07-24 19:16:53 UTC - Grant Wu: Does this change of any of the things I am working on? ---- 2018-07-24 19:16:59 UTC - Matteo Merli: actually, preview here: <https://cckellogg.github.io/incubator-pulsar/> ---- 2018-07-24 19:17:24 UTC - Matteo Merli: Chris has been porting the changes committed to master into the new format as well ---- 2018-07-24 19:17:26 UTC - Grant Wu: h o l y the sidebar isn’t completely uselessly broken ---- 2018-07-24 19:17:40 UTC - Matteo Merli: that’s #1 feature ---- 2018-07-24 19:22:35 UTC - Grant Wu: There’s a broken picture here, though <https://cckellogg.github.io/incubator-pulsar/docs/administration-geo#using-global-topics> ---- 2018-07-24 19:23:03 UTC - Grant Wu: Wait, so is this related to the swagger `hidden=true` ? ---- 2018-07-24 19:24:47 UTC - Matteo Merli: Yes, it’s still a work in progress. I think images are broken because it’s on a sub-folder for now ---- 2018-07-24 21:43:27 UTC - Sijie Guo: all, please take a look and vote the RC5 for 2.1.0 release ---- 2018-07-24 21:50:00 UTC - Sijie Guo: I have updated the jenkins CI. now you can trigger individual jobs without rerun all tests. - `(re)run java8 tests` => for java8 tests - `(re)run cpp tests` => for cpp tests - `(re)run integration tests` => for integration tests tada : Matteo Merli, Ali Ahmed ---- 2018-07-24 21:50:50 UTC - Sijie Guo: “retest this please” will run all 3 tests ---- 2018-07-25 00:11:19 UTC - Jerry Peng: @Rajan Dhabalia Your PR: Schedule task to update function stats separately prints a bunch of error messages when there are no stats I think: 16:54:59.248 [worker-stats-updater-1-1] ERROR org.apache.pulsar.functions.worker.FunctionRuntimeManager - Failed to update stats for test/test-namespace/example:0-io.grpc.StatusRuntimeException: CANCELLED: HTTP/2 error code: CANCEL Received Rst Stream Jul 24, 2018 4:55:59 PM org.apache.pulsar.functions.runtime.shaded.io.grpc.internal.ServerCallImpl internalClose WARNING: Cancelling the stream with status Status{code=INTERNAL, description=Completed without a response, cause=null} ---- 2018-07-25 00:13:25 UTC - Rajan Dhabalia: hmm..ok..let me check ---- 2018-07-25 00:13:39 UTC - Jerry Peng: thanks! ---- 2018-07-25 00:16:22 UTC - Jerry Peng: Ya even when there are processed messages, the error still happens ---- 2018-07-25 00:17:11 UTC - Rajan Dhabalia: ok.. can you please verify runtime factory type: thread or process? ---- 2018-07-25 00:17:24 UTC - Jerry Peng: process ---- 2018-07-25 00:17:31 UTC - Jerry Peng: just running standalone cluster ---- 2018-07-25 00:17:39 UTC - Rajan Dhabalia: thanks ---- 2018-07-25 01:15:28 UTC - Rajan Dhabalia: @Jerry Peng <https://github.com/apache/incubator-pulsar/pull/2225> ----