45
45
import org .opensearch .core .common .unit .ByteSizeValue ;
46
46
import org .opensearch .repositories .s3 .async .AsyncExecutorContainer ;
47
47
import org .opensearch .repositories .s3 .async .AsyncTransferManager ;
48
+ import org .opensearch .repositories .s3 .async .SizeBasedBlockingQ ;
48
49
49
50
import java .io .IOException ;
50
51
import java .util .Collections ;
56
57
import static org .opensearch .repositories .s3 .S3Repository .BUFFER_SIZE_SETTING ;
57
58
import static org .opensearch .repositories .s3 .S3Repository .BULK_DELETE_SIZE ;
58
59
import static org .opensearch .repositories .s3 .S3Repository .CANNED_ACL_SETTING ;
60
+ import static org .opensearch .repositories .s3 .S3Repository .PERMIT_BACKED_TRANSFER_ENABLED ;
59
61
import static org .opensearch .repositories .s3 .S3Repository .REDIRECT_LARGE_S3_UPLOAD ;
60
62
import static org .opensearch .repositories .s3 .S3Repository .SERVER_SIDE_ENCRYPTION_SETTING ;
61
63
import static org .opensearch .repositories .s3 .S3Repository .STORAGE_CLASS_SETTING ;
@@ -77,6 +79,8 @@ class S3BlobStore implements BlobStore {
77
79
78
80
private volatile boolean uploadRetryEnabled ;
79
81
82
+ private volatile boolean permitBackedTransferEnabled ;
83
+
80
84
private volatile boolean serverSideEncryption ;
81
85
82
86
private volatile ObjectCannedACL cannedACL ;
@@ -94,6 +98,9 @@ class S3BlobStore implements BlobStore {
94
98
private final AsyncExecutorContainer priorityExecutorBuilder ;
95
99
private final AsyncExecutorContainer normalExecutorBuilder ;
96
100
private final boolean multipartUploadEnabled ;
101
+ private final SizeBasedBlockingQ normalPrioritySizeBasedBlockingQ ;
102
+ private final SizeBasedBlockingQ lowPrioritySizeBasedBlockingQ ;
103
+ private final GenericStatsMetricPublisher genericStatsMetricPublisher ;
97
104
98
105
S3BlobStore (
99
106
S3Service service ,
@@ -109,7 +116,10 @@ class S3BlobStore implements BlobStore {
109
116
AsyncTransferManager asyncTransferManager ,
110
117
AsyncExecutorContainer urgentExecutorBuilder ,
111
118
AsyncExecutorContainer priorityExecutorBuilder ,
112
- AsyncExecutorContainer normalExecutorBuilder
119
+ AsyncExecutorContainer normalExecutorBuilder ,
120
+ SizeBasedBlockingQ normalPrioritySizeBasedBlockingQ ,
121
+ SizeBasedBlockingQ lowPrioritySizeBasedBlockingQ ,
122
+ GenericStatsMetricPublisher genericStatsMetricPublisher
113
123
) {
114
124
this .service = service ;
115
125
this .s3AsyncService = s3AsyncService ;
@@ -128,6 +138,10 @@ class S3BlobStore implements BlobStore {
128
138
// Settings to initialize blobstore with.
129
139
this .redirectLargeUploads = REDIRECT_LARGE_S3_UPLOAD .get (repositoryMetadata .settings ());
130
140
this .uploadRetryEnabled = UPLOAD_RETRY_ENABLED .get (repositoryMetadata .settings ());
141
+ this .normalPrioritySizeBasedBlockingQ = normalPrioritySizeBasedBlockingQ ;
142
+ this .lowPrioritySizeBasedBlockingQ = lowPrioritySizeBasedBlockingQ ;
143
+ this .genericStatsMetricPublisher = genericStatsMetricPublisher ;
144
+ this .permitBackedTransferEnabled = PERMIT_BACKED_TRANSFER_ENABLED .get (repositoryMetadata .settings ());
131
145
}
132
146
133
147
@ Override
@@ -141,6 +155,7 @@ public void reload(RepositoryMetadata repositoryMetadata) {
141
155
this .bulkDeletesSize = BULK_DELETE_SIZE .get (repositoryMetadata .settings ());
142
156
this .redirectLargeUploads = REDIRECT_LARGE_S3_UPLOAD .get (repositoryMetadata .settings ());
143
157
this .uploadRetryEnabled = UPLOAD_RETRY_ENABLED .get (repositoryMetadata .settings ());
158
+ this .permitBackedTransferEnabled = PERMIT_BACKED_TRANSFER_ENABLED .get (repositoryMetadata .settings ());
144
159
}
145
160
146
161
@ Override
@@ -168,6 +183,10 @@ public boolean isUploadRetryEnabled() {
168
183
return uploadRetryEnabled ;
169
184
}
170
185
186
+ public boolean isPermitBackedTransferEnabled () {
187
+ return permitBackedTransferEnabled ;
188
+ }
189
+
171
190
public String bucket () {
172
191
return bucket ;
173
192
}
@@ -184,6 +203,14 @@ public int getBulkDeletesSize() {
184
203
return bulkDeletesSize ;
185
204
}
186
205
206
+ public SizeBasedBlockingQ getNormalPrioritySizeBasedBlockingQ () {
207
+ return normalPrioritySizeBasedBlockingQ ;
208
+ }
209
+
210
+ public SizeBasedBlockingQ getLowPrioritySizeBasedBlockingQ () {
211
+ return lowPrioritySizeBasedBlockingQ ;
212
+ }
213
+
187
214
@ Override
188
215
public BlobContainer blobContainer (BlobPath path ) {
189
216
return new S3BlobContainer (path , this );
@@ -201,7 +228,9 @@ public void close() throws IOException {
201
228
202
229
@ Override
203
230
public Map <String , Long > stats () {
204
- return statsMetricPublisher .getStats ().toMap ();
231
+ Map <String , Long > stats = statsMetricPublisher .getStats ().toMap ();
232
+ stats .putAll (genericStatsMetricPublisher .stats ());
233
+ return stats ;
205
234
}
206
235
207
236
@ Override
@@ -211,6 +240,7 @@ public Map<Metric, Map<String, Long>> extendedStats() {
211
240
}
212
241
Map <Metric , Map <String , Long >> extendedStats = new HashMap <>();
213
242
statsMetricPublisher .getExtendedStats ().forEach ((k , v ) -> extendedStats .put (k , v .toMap ()));
243
+ extendedStats .put (Metric .GENERIC_STATS , genericStatsMetricPublisher .stats ());
214
244
return extendedStats ;
215
245
}
216
246
0 commit comments