OmniSciDB  085a039ca4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
omnisci_aws_sdk Namespace Reference

Classes

struct  SslConfig
 

Functions

void init_sdk ()
 
void shutdown_sdk ()
 
SslConfig get_ssl_config ()
 

Function Documentation

SslConfig omnisci_aws_sdk::get_ssl_config ( )

Definition at line 58 of file OmniSciAwsSdk.cpp.

References omnisci_aws_sdk::SslConfig::ca_file, and omnisci_aws_sdk::SslConfig::ca_path.

Referenced by init_sdk().

58  {
59  SslConfig ssl_config;
60  /*
61  Fix a wrong ca path established at building libcurl on Centos being carried to
62  Ubuntu. To fix the issue, this is this sequence of locating ca file: 1) if
63  `SSL_CERT_DIR` or `SSL_CERT_FILE` is set, set it to S3 ClientConfiguration. 2) if
64  none ^ is set, heavydb searches a list of known ca file paths. 3) if 2)
65  finds nothing, it is users' call to set correct SSL_CERT_DIR or SSL_CERT_FILE. S3
66  c++ sdk: "we only want to override the default path if someone has explicitly told
67  us to."
68  */
69  std::list<std::string> v_known_ca_paths({
70  "/etc/ssl/certs/ca-certificates.crt",
71  "/etc/pki/tls/certs/ca-bundle.crt",
72  "/usr/share/ssl/certs/ca-bundle.crt",
73  "/usr/local/share/certs/ca-root.crt",
74  "/etc/ssl/cert.pem",
75  "/etc/ssl/ca-bundle.pem",
76  });
77  char* env;
78  if (nullptr != (env = getenv("SSL_CERT_DIR"))) {
79  ssl_config.ca_path = env;
80  }
81  if (nullptr != (env = getenv("SSL_CERT_FILE"))) {
82  v_known_ca_paths.push_front(env);
83  }
84  for (const auto& known_ca_path : v_known_ca_paths) {
85  if (boost::filesystem::exists(known_ca_path)) {
86  ssl_config.ca_file = known_ca_path;
87  break;
88  }
89  }
90  return ssl_config;
91 }

+ Here is the caller graph for this function:

void omnisci_aws_sdk::init_sdk ( )

Definition at line 33 of file OmniSciAwsSdk.cpp.

References CHECK, and get_ssl_config().

Referenced by startHeavyDBServer().

33  {
34  auto ssl_config = omnisci_aws_sdk::get_ssl_config();
35  arrow::fs::FileSystemGlobalOptions global_options;
36  global_options.tls_ca_dir_path = ssl_config.ca_path;
37  global_options.tls_ca_file_path = ssl_config.ca_file;
38  arrow::fs::Initialize(global_options);
39  arrow::fs::S3GlobalOptions s3_global_options;
40  auto status = arrow::fs::InitializeS3(s3_global_options);
41  CHECK(status.ok()) << "InitializeS3 resulted in an error: " << status.message();
42 #ifdef ARROW_HAS_PRIVATE_AWS_SDK
43  // Directly initialize the AWS SDK, if Arrow uses a private version of the SDK
44  Aws::InitAPI(awsapi_options);
45 #endif
46 }
SslConfig get_ssl_config()
#define CHECK(condition)
Definition: Logger.h:223

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void omnisci_aws_sdk::shutdown_sdk ( )

Definition at line 48 of file OmniSciAwsSdk.cpp.

References CHECK.

Referenced by startHeavyDBServer().

48  {
49  auto status = arrow::fs::FinalizeS3();
50  CHECK(status.ok()) << "FinalizeS3 resulted in an error: " << status.message();
51 #ifdef ARROW_HAS_PRIVATE_AWS_SDK
52  // Directly shutdown the AWS SDK, if Arrow uses a private version of the SDK
53  Aws::ShutdownAPI(awsapi_options);
54 #endif
55 }
#define CHECK(condition)
Definition: Logger.h:223

+ Here is the caller graph for this function: