Skip to content

#1456: Cleaned up and refactored exaudfclient cc#642

Open
sgn4sangar wants to merge 12 commits into
masterfrom
refactoring/1456_cleanup_exaudfclient_cc
Open

#1456: Cleaned up and refactored exaudfclient cc#642
sgn4sangar wants to merge 12 commits into
masterfrom
refactoring/1456_cleanup_exaudfclient_cc

Conversation

@sgn4sangar

@sgn4sangar sgn4sangar commented May 25, 2026

Copy link
Copy Markdown
Contributor

relates to #1456

Comment thread exaudfclient/exa_vm_factory.h Outdated
Comment on lines +4 to +22
#ifdef ENABLE_JAVA_VM
#include "javacontainer/javacontainer_builder.h"
#endif //ENABLE_JAVA_VM

#ifdef ENABLE_PYTHON_VM
#include "python/pythoncontainer.h"
#endif //ENABLE_PYTHON_VM

#ifdef UDF_PLUGIN_CLIENT
#include "protegrityclient.h"
#endif //UDF_PLUGIN_CLIENT

#ifdef ENABLE_STREAMING_VM
#include "streaming_container/streamingcontainer.h"
#endif

#ifdef ENABLE_BENCHMARK_VM
#include "benchmark_container/benchmark_container.h"
#endif

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can be moved into exaudfclient/exa_vm_factory.cc

Comment thread exaudfclient/exa_lib_loader.cc Outdated
if((error = dlerror()) != nullptr) {
std::stringstream sb;
sb << "Error when trying to load symbol '" << symbol_name << "': " << error;
fprintf(stderr, "dlsym error: %s loading symbol %s\n", error, sb.str().c_str());

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already using streams for constructing sb, so we probably can also use cerr directly and don't need the string stream and the fprintf

Comment thread exaudfclient/exa_lib_loader.cc Outdated

void* handle = dlmopen(LM_ID_NEWLM, stdLibPath.c_str(), RTLD_NOW);
if (!handle) {
fprintf(stderr, "dlmopen error: %s; while loading %s\n", dlerror(), stdLibPath.c_str());

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably could move this also to cerr

Comment thread exaudfclient/exa_set_env.cc Outdated

void setup_environment() {
if (::setenv("HOME", "/tmp", 1) == -1) {
fprintf(stderr, "Failed setting HOME env var: %s\n", std::strerror(errno));

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably move this also to cerr

Comment thread exaudfclient/exa_udfclient.cc Outdated
DBGVAR(std::cerr, libexaudflibPath);
void* handle = exa_load_libary(libexaudflibPath);
if (!handle) {
fprintf(stderr, "Failed to load library: %s\n", libexaudflibPath.c_str());

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are already using cerr, so we probably can use it here, too

Comment thread exaudfclient/exa_udfclient.cc
Comment thread exaudfclient/exa_common/exa_lib_loader.cc
Comment thread exaudfclient/exa_common/exa_lib_loader.cc
Comment thread exaudfclient/exa_common/exa_set_env.cc
Comment thread exaudfclient/exa_udfclient.cc Outdated
exit(EXIT_FAILURE);
}
std::string libexaudflibPath;
#ifdef CUSTOM_LIBEXAUDFLIB_PATH

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should move the ifdef into its own function, this would make this function easier to read

Comment thread exaudfclient/exa_common/exa_vm_factory.cc
Comment thread exaudfclient/exa_udf_base.cpp Outdated

mb_useCtpgParser = false;
if(argc == 4) {
mb_useCtpgParser = is_use_ctpg_parser(argv[3]);

@tomuben tomuben May 27, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This introduces a bug: If there is no fourth CLI parameter, the environment variable SCRIPT_OPTIONS_PARSER_VERSION is never eveluated!

Comment thread exaudfclient/exa_udf_base.cpp Outdated

// Parser option 2 means use ctpg parser.
// argv_parser_option is command line argument as it is
bool ExaUdfClientBase::is_use_ctpg_parser(const std::string& argv_parser_option) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is_use_ctpg_parser is a strange name. Maybe just use_ctpg_parser?

Comment thread exaudfclient/exa_udf_clients.cpp Outdated
#endif //ENABLE_PYTHON_VM

void ExaUdfClientPython::usage(const std::string& programName) {
std::cerr << "Usage: " << programName << " <socket> lang=python <scriptOptionsParserVersion=1|2>"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scriptOptionsParserVersion is actually only relevant for Java

Comment thread exaudfclient/exa_common/exa_udf_base.h
Comment thread exaudfclient/exa_udf_base.cpp Outdated

setup_environment();
std::function<SWIGVMContainers::SWIGVM*()> vmMaker;
switch(m_lang) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Base class should be an abstract class and call here create_vm, however don't implement it. You mixed implementation of the client that supports all languages with the implementation of the abstract class. For the moment, we need the ExaudfclientBase as abstract class, ExaudfclientAllLangs, and we can add for each language its Exaudfclient{Lang} if we want to, however I would wait with later until we do the split into repos.

@tkilias tkilias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accidentally approved, please see my comments

Comment thread exaudfclient/exa_udf_base.h Outdated
Comment thread exaudfclient/exa_udf_base.h Outdated
Comment thread exaudfclient/exa_udf_base.cpp Outdated
Comment thread exaudfclient/exa_udf_base.cpp Outdated
Comment thread exaudfclient/exa_vm_factory.cc Outdated
Comment thread exaudfclient/exa_udf_base.h Outdated
Comment thread exaudfclient/exa_udf_base.h Outdated
Comment thread exaudfclient/exa_udf_clients.cpp Outdated
Comment thread exaudfclient/exa_udf_base.h Outdated
Comment thread exaudfclient/exa_udf_base.h Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants