Skip to content

Commit f85c560

Browse files
authored
Fix spark memory option causing overflow. (#34)
1 parent eac675f commit f85c560

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

apis/spark/src/main/java/io/tiledb/vcf/VCFInputPartitionReader.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ private void initVCFReader() {
251251

252252
// Get the memory budget, if specified.
253253
Optional<Integer> memoryBudget = options.getMemoryBudget();
254-
int memBudgetMB = DEFAULT_MEM_BUDGET_MB;
254+
long memBudgetMB = DEFAULT_MEM_BUDGET_MB;
255255
if (memoryBudget.isPresent()) {
256256
memBudgetMB = memoryBudget.get();
257257
}
@@ -264,7 +264,7 @@ private void initVCFReader() {
264264
memBudgetMB /= 2;
265265

266266
// Compute allocation size; check against some reasonable minimum.
267-
int bufferSizeMB = ((memBudgetMB * 1024 * 1024) / nBuffers) / (1024 * 1024);
267+
long bufferSizeMB = ((memBudgetMB * 1024 * 1024) / nBuffers) / (1024 * 1024);
268268
if (bufferSizeMB < 10) {
269269
log.warn(
270270
"Warning: TileDB-VCF-Spark buffer allocation of "
@@ -274,7 +274,7 @@ private void initVCFReader() {
274274
+ " MB.");
275275
}
276276

277-
int bufferSizeBytes = bufferSizeMB * (1024 * 1024);
277+
long bufferSizeBytes = bufferSizeMB * (1024 * 1024);
278278

279279
releaseArrowVectors();
280280
for (int idx = 0; idx < numColumns; idx++) {
@@ -283,7 +283,7 @@ private void initVCFReader() {
283283
}
284284
}
285285

286-
vcfReader.setMemoryBudget(memBudgetMB);
286+
vcfReader.setMemoryBudget((int) memBudgetMB);
287287

288288
if (enableStatsLogging) {
289289
log.info(
@@ -304,12 +304,12 @@ private void initVCFReader() {
304304
* attributes have multiple buffers allocated (data values, offsets), in which case this size
305305
* is used for all buffers individually.
306306
*/
307-
private void allocateAndSetBuffer(String fieldName, String attrName, int attributeBufferSize) {
307+
private void allocateAndSetBuffer(String fieldName, String attrName, long attributeBufferSize) {
308308
VCFReader.AttributeTypeInfo info = vcfReader.getAttributeDatatype(attrName);
309309

310310
// Max number of rows is nbytes / sizeof(int32_t), i.e. the max number of offsets that can be
311311
// stored.
312-
int maxNumRows = attributeBufferSize / 4;
312+
int maxNumRows = (int) (attributeBufferSize / 4);
313313

314314
// Allocate an Arrow-backed buffer for the attribute.
315315
ValueVector valueVector = makeArrowVector(fieldName, info);

0 commit comments

Comments
 (0)