From d337b13f62a0b80859975cc2d80428ee688a3f2e Mon Sep 17 00:00:00 2001
From: David Li
Date: Wed, 7 Apr 2021 16:11:28 -0400
Subject: [PATCH] ARROW-10421: [R] Use gc_memory_pool in more places
---
r/src/filesystem.cpp | 7 +++++--
r/src/recordbatchreader.cpp | 8 ++++++--
r/src/recordbatchwriter.cpp | 2 ++
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/r/src/filesystem.cpp b/r/src/filesystem.cpp
index fced8abdd07..b7ec605361d 100644
--- a/r/src/filesystem.cpp
+++ b/r/src/filesystem.cpp
@@ -231,7 +231,9 @@ std::string fs___FileSystem__type_name(
// [[arrow::export]]
std::shared_ptr fs___LocalFileSystem__create() {
- return std::make_shared();
+ // Affects OpenInputFile/OpenInputStream
+ auto io_context = arrow::io::IOContext(gc_memory_pool());
+ return std::make_shared(io_context);
}
// [[arrow::export]]
@@ -315,7 +317,8 @@ std::shared_ptr fs___S3FileSystem__create(
s3_opts.background_writes = background_writes;
StopIfNotOk(fs::EnsureS3Initialized());
- return ValueOrStop(fs::S3FileSystem::Make(s3_opts));
+ auto io_context = arrow::io::IOContext(gc_memory_pool());
+ return ValueOrStop(fs::S3FileSystem::Make(s3_opts, io_context));
}
// [[s3::export]]
diff --git a/r/src/recordbatchreader.cpp b/r/src/recordbatchreader.cpp
index 6f746e38d10..e2819daf89b 100644
--- a/r/src/recordbatchreader.cpp
+++ b/r/src/recordbatchreader.cpp
@@ -40,7 +40,9 @@ std::shared_ptr RecordBatchReader__ReadNext(
// [[arrow::export]]
std::shared_ptr ipc___RecordBatchStreamReader__Open(
const std::shared_ptr& stream) {
- return ValueOrStop(arrow::ipc::RecordBatchStreamReader::Open(stream));
+ auto options = arrow::ipc::IpcReadOptions::Defaults();
+ options.memory_pool = gc_memory_pool();
+ return ValueOrStop(arrow::ipc::RecordBatchStreamReader::Open(stream, options));
}
// [[arrow::export]]
@@ -85,7 +87,9 @@ std::shared_ptr ipc___RecordBatchFileReader__ReadRecordBatch
// [[arrow::export]]
std::shared_ptr ipc___RecordBatchFileReader__Open(
const std::shared_ptr& file) {
- return ValueOrStop(arrow::ipc::RecordBatchFileReader::Open(file));
+ auto options = arrow::ipc::IpcReadOptions::Defaults();
+ options.memory_pool = gc_memory_pool();
+ return ValueOrStop(arrow::ipc::RecordBatchFileReader::Open(file, options));
}
// [[arrow::export]]
diff --git a/r/src/recordbatchwriter.cpp b/r/src/recordbatchwriter.cpp
index 4714c1d104a..00a617e551f 100644
--- a/r/src/recordbatchwriter.cpp
+++ b/r/src/recordbatchwriter.cpp
@@ -48,6 +48,7 @@ std::shared_ptr ipc___RecordBatchFileWriter__Open
auto options = arrow::ipc::IpcWriteOptions::Defaults();
options.write_legacy_ipc_format = use_legacy_format;
options.metadata_version = metadata_version;
+ options.memory_pool = gc_memory_pool();
return ValueOrStop(arrow::ipc::MakeFileWriter(stream, schema, options));
}
@@ -59,6 +60,7 @@ std::shared_ptr ipc___RecordBatchStreamWriter__Op
auto options = arrow::ipc::IpcWriteOptions::Defaults();
options.write_legacy_ipc_format = use_legacy_format;
options.metadata_version = metadata_version;
+ options.memory_pool = gc_memory_pool();
return ValueOrStop(MakeStreamWriter(stream, schema, options));
}