From 5af971c369994046a48945bfbdbb085cfd2452af Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Thu, 25 May 2023 13:28:28 +0200
Subject: [PATCH] Add waiting for Observer

---
 .../common/binaryfile/GrpcFileUploadUtils.java  | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java
index 7187a5d..6dbeaa7 100644
--- a/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java
+++ b/kop-common-lib/src/main/java/de/itvsh/kop/common/binaryfile/GrpcFileUploadUtils.java
@@ -25,6 +25,7 @@ package de.itvsh.kop.common.binaryfile;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -87,6 +88,7 @@ public class GrpcFileUploadUtils {
 
 		void sendNext() {
 			if (!done.get()) {
+				waitForOberver();
 				LOG.debug("Sending next chunk.");
 				sendMetaData();
 				long sentSize = sendNextChunk();
@@ -94,6 +96,21 @@ public class GrpcFileUploadUtils {
 			}
 		}
 
+		private void waitForOberver() {
+			synchronized (this) {
+				while (Objects.isNull(requestObserver)) {
+					try {
+						LOG.debug("wait for observer");
+						wait(300);
+					} catch (InterruptedException e) {
+						LOG.error("Error on waiting for request Observer.", e);
+						Thread.currentThread().interrupt();
+					}
+				}
+			}
+
+		}
+
 		long sendNextChunk() {
 			byte[] contentToSend = readFromStream();
 
-- 
GitLab