Skip to content

Commit

Permalink
feat(s3stream): add strict check mode (#834)
Browse files Browse the repository at this point in the history
Signed-off-by: Robin Han <[email protected]>
  • Loading branch information
superhx authored Dec 15, 2023
1 parent e26a007 commit 3a807e3
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
5 changes: 4 additions & 1 deletion s3stream/src/main/java/com/automq/stream/s3/S3Stream.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import com.automq.stream.s3.network.AsyncNetworkBandwidthLimiter;
import com.automq.stream.s3.streams.StreamManager;
import com.automq.stream.utils.FutureUtil;
import com.automq.stream.utils.GlobalSwitch;
import io.netty.buffer.Unpooled;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -292,7 +293,9 @@ public CompletableFuture<Void> close() {

// await all pending append/fetch/trim request
List<CompletableFuture<?>> pendingRequests = new ArrayList<>(pendingAppends);
pendingRequests.addAll(pendingFetches);
if (GlobalSwitch.STRICT) {
pendingRequests.addAll(pendingFetches);
}
pendingRequests.add(lastPendingTrim);
CompletableFuture<Void> awaitPendingRequestsCf = CompletableFuture.allOf(pendingRequests.toArray(new CompletableFuture[0]));
CompletableFuture<Void> closeCf = new CompletableFuture<>();
Expand Down
33 changes: 33 additions & 0 deletions s3stream/src/main/java/com/automq/stream/utils/GlobalSwitch.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.automq.stream.utils;

public class GlobalSwitch {

public static final boolean STRICT = getBoolean("AUTOMQ_S3STREAM_STRICT", false);

private static boolean getBoolean(String name, boolean defaultValue) {
String value = System.getenv(name);
if (value == null) {
return defaultValue;
} else {
return Boolean.parseBoolean(value);
}
}

}

0 comments on commit 3a807e3

Please sign in to comment.