void removeConsumer(final long consumerId) { consumers.remove(consumerId); }
void removeProducer(final long producerId) { producers.remove(producerId); }
public CompletableFuture<MessageIdData> sendGetLastMessageId(ByteBuf request, long requestId) { CompletableFuture<MessageIdData> future = new CompletableFuture<>(); pendingGetLastMessageIdRequests.put(requestId, future); ctx.writeAndFlush(request).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send GetLastMessageId request to broker: {}", ctx.channel(), writeFuture.cause().getMessage()); pendingGetLastMessageIdRequests.remove(requestId); future.completeExceptionally(writeFuture.cause()); } }); return future; }
public CompletableFuture<Optional<SchemaInfo>> sendGetSchema(ByteBuf request, long requestId) { CompletableFuture<Optional<SchemaInfo>> future = new CompletableFuture<>(); pendingGetSchemaRequests.put(requestId, future); ctx.writeAndFlush(request).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send GetSchema request to broker: {}", ctx.channel(), writeFuture.cause().getMessage()); pendingGetLastMessageIdRequests.remove(requestId); future.completeExceptionally(writeFuture.cause()); } }); return future; }
public CompletableFuture<List<String>> newGetTopicsOfNamespace(ByteBuf request, long requestId) { CompletableFuture<List<String>> future = new CompletableFuture<>(); pendingGetTopicsRequests.put(requestId, future); ctx.writeAndFlush(request).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send request {} to broker: {}", ctx.channel(), requestId, writeFuture.cause().getMessage()); pendingGetTopicsRequests.remove(requestId); future.completeExceptionally(writeFuture.cause()); } }); return future; }
CompletableFuture<ProducerResponse> sendRequestWithId(ByteBuf cmd, long requestId) { CompletableFuture<ProducerResponse> future = new CompletableFuture<>(); pendingRequests.put(requestId, future); ctx.writeAndFlush(cmd).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send request to broker: {}", ctx.channel(), writeFuture.cause().getMessage()); pendingRequests.remove(requestId); future.completeExceptionally(writeFuture.cause()); } }); requestTimeoutQueue.add(new RequestTime(System.currentTimeMillis(), requestId)); return future; }
private void checkRequestTimeout() { while (!requestTimeoutQueue.isEmpty()) { RequestTime request = requestTimeoutQueue.peek(); if (request == null || (System.currentTimeMillis() - request.creationTimeMs) < operationTimeoutMs) { // if there is no request that is timed out then exit the loop break; } request = requestTimeoutQueue.poll(); CompletableFuture<ProducerResponse> requestFuture = pendingRequests.remove(request.requestId); if (requestFuture != null && !requestFuture.isDone() && requestFuture.completeExceptionally(new TimeoutException( request.requestId + " lookup request timedout after ms " + operationTimeoutMs))) { log.warn("{} request {} timed out after {} ms", ctx.channel(), request.requestId, operationTimeoutMs); } else { // request is already completed successfully. } } }
void invalidateLedgerHandle(ReadHandle ledgerHandle, Throwable t) { long ledgerId = ledgerHandle.getId(); if (currentLedger != null && ledgerId != currentLedger.getId()) { // remove handle from ledger cache since we got a (read) error ledgerCache.remove(ledgerId); if (log.isDebugEnabled()) { log.debug("[{}] Removed ledger {} from cache (after read error)", name, ledgerId, t); } } else { if (log.isDebugEnabled()) { log.debug("[{}] Ledger that encountered read error is current ledger", name, t); } } }
@Override protected void handleSuccess(CommandSuccess success) { checkArgument(state == State.Ready); if (log.isDebugEnabled()) { log.debug("{} Received success response from server: {}", ctx.channel(), success.getRequestId()); } long requestId = success.getRequestId(); CompletableFuture<ProducerResponse> requestFuture = pendingRequests.remove(requestId); if (requestFuture != null) { requestFuture.complete(null); } else { log.warn("{} Received unknown request id from server: {}", ctx.channel(), success.getRequestId()); } }
@Override protected void handleGetTopicsOfNamespaceSuccess(CommandGetTopicsOfNamespaceResponse success) { checkArgument(state == State.Ready); long requestId = success.getRequestId(); List<String> topics = success.getTopicsList(); if (log.isDebugEnabled()) { log.debug("{} Received get topics of namespace success response from server: {} - topics.size: {}", ctx.channel(), success.getRequestId(), topics.size()); } CompletableFuture<List<String>> requestFuture = pendingGetTopicsRequests.remove(requestId); if (requestFuture != null) { requestFuture.complete(topics); } else { log.warn("{} Received unknown request id from server: {}", ctx.channel(), success.getRequestId()); } }
@Override protected void handleGetLastMessageIdSuccess(CommandGetLastMessageIdResponse success) { checkArgument(state == State.Ready); if (log.isDebugEnabled()) { log.debug("{} Received success GetLastMessageId response from server: {}", ctx.channel(), success.getRequestId()); } long requestId = success.getRequestId(); CompletableFuture<MessageIdData> requestFuture = pendingGetLastMessageIdRequests.remove(requestId); if (requestFuture != null) { requestFuture.complete(success.getLastMessageId()); } else { log.warn("{} Received unknown request id from server: {}", ctx.channel(), success.getRequestId()); } }
private CompletableFuture<LookupDataResult> getAndRemovePendingLookupRequest(long requestId) { CompletableFuture<LookupDataResult> result = pendingLookupRequests.remove(requestId); if (result != null) { Pair<Long, Pair<ByteBuf, CompletableFuture<LookupDataResult>>> firstOneWaiting = waitingLookupRequests.poll(); if (firstOneWaiting != null) { // schedule a new lookup in. eventLoopGroup.submit(() -> { long newId = firstOneWaiting.getLeft(); CompletableFuture<LookupDataResult> newFuture = firstOneWaiting.getRight().getRight(); addPendingLookupRequests(newId, newFuture); ctx.writeAndFlush(firstOneWaiting.getRight().getLeft()).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send request {} to broker: {}", ctx.channel(), newId, writeFuture.cause().getMessage()); getAndRemovePendingLookupRequest(newId); newFuture.completeExceptionally(writeFuture.cause()); } }); }); } else { pendingLookupRequestSemaphore.release(); } } return result; }
@Override protected void handleError(CommandError error) { checkArgument(state == State.Ready); log.warn("{} Received error from server: {}", ctx.channel(), error.getMessage()); long requestId = error.getRequestId(); if (error.getError() == ServerError.ProducerBlockedQuotaExceededError) { log.warn("{} Producer creation has been blocked because backlog quota exceeded for producer topic", ctx.channel()); } CompletableFuture<ProducerResponse> requestFuture = pendingRequests.remove(requestId); if (requestFuture != null) { requestFuture.completeExceptionally(getPulsarClientException(error.getError(), error.getMessage())); } else { log.warn("{} Received unknown request id from server: {}", ctx.channel(), error.getRequestId()); } }
@Override protected void handleProducerSuccess(CommandProducerSuccess success) { checkArgument(state == State.Ready); if (log.isDebugEnabled()) { log.debug("{} Received producer success response from server: {} - producer-name: {}", ctx.channel(), success.getRequestId(), success.getProducerName()); } long requestId = success.getRequestId(); CompletableFuture<ProducerResponse> requestFuture = pendingRequests.remove(requestId); if (requestFuture != null) { requestFuture.complete(new ProducerResponse(success.getProducerName(), success.getLastSequenceId(), success.getSchemaVersion().toByteArray())); } else { log.warn("{} Received unknown request id from server: {}", ctx.channel(), success.getRequestId()); } }
@Override protected void handleGetSchemaResponse(CommandGetSchemaResponse commandGetSchemaResponse) { checkArgument(state == State.Ready); long requestId = commandGetSchemaResponse.getRequestId(); CompletableFuture<Optional<SchemaInfo>> future = pendingGetSchemaRequests.remove(requestId); if (future == null) { log.warn("{} Received unknown request id from server: {}", ctx.channel(), requestId); return; } if (commandGetSchemaResponse.hasErrorCode()) { // Request has failed ServerError rc = commandGetSchemaResponse.getErrorCode(); if (rc == ServerError.TopicNotFound) { future.complete(Optional.empty()); } else { future.completeExceptionally(getPulsarClientException(rc, commandGetSchemaResponse.getErrorMessage())); } } else { future.complete(Optional.of(SchemaInfoUtil.newSchemaInfo(commandGetSchemaResponse.getSchema()))); } }
errorToReport); } else { ledgerCache.remove(ledgerId); offloadLoop(promise, ledgersToOffload, firstUnoffloaded, firstError);
mbean.endDataLedgerOpenOp(); if (ex != null) { ledgerCache.remove(ledgerId, promise); promise.completeExceptionally(createManagedLedgerException(ex)); } else {
ledgerCache.remove(ls.getLedgerId());
public void removedProducer(Producer producer) { if (log.isDebugEnabled()) { log.debug("[{}] Removed producer: {}", remoteAddress, producer); } producers.remove(producer.getProducerId()); }
CompletableFuture<ProducerResponse> sendRequestWithId(ByteBuf cmd, long requestId) { CompletableFuture<ProducerResponse> future = new CompletableFuture<>(); pendingRequests.put(requestId, future); ctx.writeAndFlush(cmd).addListener(writeFuture -> { if (!writeFuture.isSuccess()) { log.warn("{} Failed to send request to broker: {}", ctx.channel(), writeFuture.cause().getMessage()); pendingRequests.remove(requestId); future.completeExceptionally(writeFuture.cause()); } }); return future; }