void maybeNotifyForBlobCreation() {
    if (isOperationComplete()) {
      // only notify for data chunk creation on direct uploads.
      if (isComposite() && !isStitchOperation()) {
        metadataPutChunk.maybeNotifyForFirstChunkCreation();
      }
      if (blobId != null) {
        Pair<Account, Container> accountContainer =
            RouterUtils.getAccountContainer(accountService, getBlobProperties().getAccountId(),
                getBlobProperties().getContainerId());
        NotificationBlobType blobType = isComposite() ? NotificationBlobType.Composite
            : options.isChunkUpload() || options.skipCompositeChunk() ? NotificationBlobType.DataChunk
                : NotificationBlobType.Simple;
        notificationSystem.onBlobCreated(getBlobIdString(), getBlobProperties(), accountContainer.getFirst(),
            accountContainer.getSecond(), blobType);
      }
    }
  }
Notify for overall blob creation if the operation is complete and the blob was put successfully. Also ensure that
notifications have been sent out for all successfully put data chunks.
ambry-router/src/main/java/com/github/ambry/router/PutOperation.java