diff --git a/analytical_engine/CMakeLists.txt b/analytical_engine/CMakeLists.txt index 36d209172f8a..29b78cfeb231 100644 --- a/analytical_engine/CMakeLists.txt +++ b/analytical_engine/CMakeLists.txt @@ -239,18 +239,23 @@ target_link_libraries(gs_util PRIVATE ${Boost_LIBRARIES} ) +if (ENABLE_JAVA_SDK) + target_sources(gs_util PRIVATE "core/java/javasdk.cc") + target_compile_definitions(gs_util PUBLIC ENABLE_JAVA_SDK) + target_link_libraries(gs_util PRIVATE + ${JAVA_JVM_LIBRARY} + ${JNI_LIBRARIES} + ) +endif() + add_executable(grape_engine "core/grape_engine.cc" "core/grape_instance.cc" - "core/java/javasdk.cc" "core/object/dynamic.cc" ${CORE_RPC_SRC_FILES} ) target_include_directories(grape_engine PRIVATE proto utils) - -if (ENABLE_JAVA_SDK) - target_compile_definitions(grape_engine PUBLIC ENABLE_JAVA_SDK) - target_link_libraries(grape_engine PRIVATE +target_link_libraries(grape_engine PRIVATE gs_proto gs_util ${LIBGRAPELITE_LIBRARIES} @@ -258,20 +263,12 @@ if (ENABLE_JAVA_SDK) ${CMAKE_DL_LIBS} ${Boost_LIBRARIES} ${VINEYARD_LIBRARIES} - ${JAVA_JVM_LIBRARY} - ${JNI_LIBRARIES} - ) -else() - target_link_libraries(grape_engine PRIVATE - gs_proto - gs_util - ${LIBGRAPELITE_LIBRARIES} - ${GFLAGS_LIBRARIES} - ${CMAKE_DL_LIBS} - ${Boost_LIBRARIES} - ${VINEYARD_LIBRARIES} - ) + ) + +if (ENABLE_JAVA_SDK) + target_compile_definitions(grape_engine PUBLIC ENABLE_JAVA_SDK) endif() + if (LET_IT_CRASH_ON_EXCEPTION) target_compile_definitions(grape_engine PRIVATE LET_IT_CRASH_ON_EXCEPTION) endif () diff --git a/analytical_engine/apps/java_pie/java_pie_projected_default_app.h b/analytical_engine/apps/java_pie/java_pie_projected_default_app.h index 1c286e9dc582..cd26164db6fa 100644 --- a/analytical_engine/apps/java_pie/java_pie_projected_default_app.h +++ b/analytical_engine/apps/java_pie/java_pie_projected_default_app.h @@ -36,18 +36,19 @@ namespace gs { * * @tparam FRAG_T Should be gs::ArrowProjectedFragment<...> */ -template +template class JavaPIEProjectedDefaultApp : public AppBase>, public grape::Communicator { public: // specialize the templated worker. INSTALL_DEFAULT_WORKER(JavaPIEProjectedDefaultApp, - JavaPIEProjectedDefaultContext, FRAG_T) + JavaPIEProjectedDefaultContext, FRAG_T); static constexpr grape::LoadStrategy load_strategy = grape::LoadStrategy::kBothOutIn; - static constexpr grape::MessageStrategy message_strategy = - grape::MessageStrategy::kAlongOutgoingEdgeToOuterVertex; + static constexpr grape::MessageStrategy message_strategy = _message_strategy; static constexpr bool need_split_edges = true; public: diff --git a/analytical_engine/apps/java_pie/java_pie_projected_parallel_app.h b/analytical_engine/apps/java_pie/java_pie_projected_parallel_app.h index bf30f62ede1f..2f39776dc403 100644 --- a/analytical_engine/apps/java_pie/java_pie_projected_parallel_app.h +++ b/analytical_engine/apps/java_pie/java_pie_projected_parallel_app.h @@ -26,6 +26,7 @@ limitations under the License. #include "core/context/java_pie_projected_context.h" #include "core/error.h" +#include "core/java/utils.h" namespace gs { @@ -35,19 +36,20 @@ namespace gs { * * @tparam FRAG_T Should be gs::ArrowProjectedFragment<...> */ -template +template class JavaPIEProjectedParallelApp : public grape::ParallelAppBase>, public grape::Communicator { public: // specialize the templated worker. - INSTALL_PARALLEL_WORKER(JavaPIEProjectedParallelApp, - JavaPIEProjectedParallelContext, FRAG_T) + INSTALL_JAVA_PARALLEL_WORKER(JavaPIEProjectedParallelApp, + JavaPIEProjectedParallelContext, FRAG_T) static constexpr grape::LoadStrategy load_strategy = grape::LoadStrategy::kBothOutIn; - static constexpr grape::MessageStrategy message_strategy = - grape::MessageStrategy::kAlongOutgoingEdgeToOuterVertex; + static constexpr grape::MessageStrategy message_strategy = _message_strategy; static constexpr bool need_split_edges = true; public: diff --git a/analytical_engine/apps/java_pie/java_pie_property_default_app.h b/analytical_engine/apps/java_pie/java_pie_property_default_app.h index 62bbdcc7b5b6..2f0cda930380 100644 --- a/analytical_engine/apps/java_pie/java_pie_property_default_app.h +++ b/analytical_engine/apps/java_pie/java_pie_property_default_app.h @@ -36,18 +36,20 @@ namespace gs { * * @tparam FRAG_T Should be vineyard::ArrowFragment<...> */ -template +template class JavaPIEPropertyDefaultApp : public PropertyAppBase>, public grape::Communicator { public: // specialize the templated worker. INSTALL_DEFAULT_PROPERTY_WORKER(JavaPIEPropertyDefaultApp, - JavaPIEPropertyDefaultContext, FRAG_T) + JavaPIEPropertyDefaultContext, + FRAG_T); static constexpr grape::LoadStrategy load_strategy = grape::LoadStrategy::kBothOutIn; - static constexpr grape::MessageStrategy message_strategy = - grape::MessageStrategy::kAlongOutgoingEdgeToOuterVertex; + static constexpr grape::MessageStrategy message_strategy = _message_strategy; static constexpr bool need_split_edges = true; public: diff --git a/analytical_engine/apps/java_pie/java_pie_property_parallel_app.h b/analytical_engine/apps/java_pie/java_pie_property_parallel_app.h index 0455de169926..39caad6a9acf 100644 --- a/analytical_engine/apps/java_pie/java_pie_property_parallel_app.h +++ b/analytical_engine/apps/java_pie/java_pie_property_parallel_app.h @@ -27,7 +27,9 @@ limitations under the License. #include "core/app/parallel_property_app_base.h" #include "core/context/java_pie_property_context.h" #include "core/error.h" +#include "core/java/utils.h" #include "core/worker/parallel_property_worker.h" + namespace gs { /** @@ -36,20 +38,21 @@ namespace gs { * * @tparam FRAG_T Should be vineyard::ArrowFragment<...> */ -template +template class JavaPIEPropertyParallelApp : public ParallelPropertyAppBase>, public grape::Communicator { public: // specialize the templated worker. - INSTALL_PARALLEL_PROPERTY_WORKER(JavaPIEPropertyParallelApp, - JavaPIEPropertyParallelContext, - FRAG_T) + INSTALL_JAVA_PARALLEL_PROPERTY_WORKER(JavaPIEPropertyParallelApp, + JavaPIEPropertyParallelContext, + FRAG_T); static constexpr grape::LoadStrategy load_strategy = grape::LoadStrategy::kBothOutIn; - static constexpr grape::MessageStrategy message_strategy = - grape::MessageStrategy::kAlongOutgoingEdgeToOuterVertex; + static constexpr grape::MessageStrategy message_strategy = _message_strategy; static constexpr bool need_split_edges = true; public: diff --git a/analytical_engine/core/java/utils.h b/analytical_engine/core/java/utils.h index 71bb8add58a3..1155747c31a6 100644 --- a/analytical_engine/core/java/utils.h +++ b/analytical_engine/core/java/utils.h @@ -27,6 +27,26 @@ #include "boost/property_tree/ptree.hpp" namespace gs { +#define INSTALL_JAVA_PARALLEL_WORKER(APP_T, CONTEXT_T, FRAG_T) \ + public: \ + using fragment_t = FRAG_T; \ + using context_t = CONTEXT_T; \ + using message_manager_t = grape::ParallelMessageManager; \ + using worker_t = grape::ParallelWorker; \ + static std::shared_ptr CreateWorker( \ + std::shared_ptr app, std::shared_ptr frag) { \ + return std::shared_ptr(new worker_t(app, frag)); \ + } +#define INSTALL_JAVA_PARALLEL_PROPERTY_WORKER(APP_T, CONTEXT_T, FRAG_T) \ + public: \ + using fragment_t = FRAG_T; \ + using context_t = CONTEXT_T; \ + using message_manager_t = ParallelPropertyMessageManager; \ + using worker_t = ParallelPropertyWorker; \ + static std::shared_ptr CreateWorker( \ + std::shared_ptr app, std::shared_ptr frag) { \ + return std::shared_ptr(new worker_t(app, frag)); \ + } // data vector contains all bytes, can be used to hold oid and vdata, edata. using byte_vector = std::vector; // offset vector contains offsets to deserialize data vector. diff --git a/analytical_engine/java/grape-demo/pom.xml b/analytical_engine/java/grape-demo/pom.xml index 9a364e829626..0b20edb9f0b7 100644 --- a/analytical_engine/java/grape-demo/pom.xml +++ b/analytical_engine/java/grape-demo/pom.xml @@ -145,6 +145,7 @@ *:* + module-info.class META-INF/*.SF META-INF/*.DSA META-INF/*.RSA diff --git a/analytical_engine/java/grape-runtime/pom.xml b/analytical_engine/java/grape-runtime/pom.xml index e6c833fa20cd..95aaf239c53f 100644 --- a/analytical_engine/java/grape-runtime/pom.xml +++ b/analytical_engine/java/grape-runtime/pom.xml @@ -60,6 +60,14 @@ org.slf4j slf4j-api + + org.apache.logging.log4j + log4j-api + + + org.apache.logging.log4j + log4j-core + @@ -105,6 +113,17 @@ true + + + *:* + + META-INF/versions/** + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + diff --git a/analytical_engine/java/graphx-on-graphscope/pom.xml b/analytical_engine/java/graphx-on-graphscope/pom.xml index 4e5fcd759df1..e7c2b3d9efd1 100644 --- a/analytical_engine/java/graphx-on-graphscope/pom.xml +++ b/analytical_engine/java/graphx-on-graphscope/pom.xml @@ -24,6 +24,7 @@ graphx-on-graphscope jar + GraphX on GraphScope 8