Github user selvaganesang commented on a diff in the pull request:

    https://github.com/apache/trafodion/pull/1562#discussion_r187837665
  
    --- Diff: core/sqf/src/tm/tmlib.cpp ---
    @@ -2817,35 +2833,44 @@ void TMLIB::initialize()
         // This call has been changed so that the node count includes spare 
nodes, so 
         // will give the wrong value for iv_node_count.
         msg_mon_get_node_info(&iv_node_count, MAX_NODES, NULL);
    -    is_initialized(true);
    +    iv_initialized = true;
         // We don't use gv_tmlib_initialized but set it here just to keep 
things aligned.
         gv_tmlib_initialized = true;
    +    initMutex_->unlock();
     }
     
    -
    -
     // -------------------------------------------------------------------
     // TMLIB::initJNI
     // Initialize JNI interface 
     // Only used on demand - if you do this in TMLIB::initialize
     // it gets called when it may not be used and conflicts with udrserv.
     // -------------------------------------------------------------------
    -void TMLIB::initJNI()
    +int TMLIB::initJNI()
     {
    -   int lv_err = 0;
    -   static bool ls_initialized = false;
    +    int lv_err = 0;
     
    -    //sleep(30);
    -    if (ls_initialized)
    -       return;
    -
    -    short lv_result = setupJNI();
    -    if (lv_result) {
    -        fprintf(stderr, "setupJNI returned error %d in TMLIB::initJNI. 
Exiting.\n", lv_result);
    -        fflush(stderr);
    -        abort();
    +    if ((lv_err = initJNIEnv()) != 0)
    +       return lv_err;
    +    if (isInitialized())
    +       return 0;
    +    _tlp_jenv->PopLocalFrame(NULL);
    +    if (javaMethodsInitialized_)
    +       return JavaObjectInterfaceTM::init((char *)hbasetxclient_classname, 
hbasetxclient_class, TMLibJavaMethods_, JM_LAST_HBASETXCLIENT, 
javaMethodsInitialized_);
    +    else
    +    {
    +       initMutex_->lock();
    +       if (javaMethodsInitialized_) {
    +          initMutex_->unlock();
    +          return JavaObjectInterfaceTM::init((char 
*)hbasetxclient_classname, hbasetxclient_class, TMLibJavaMethods_, 
JM_LAST_HBASETXCLIENT, javaMethodsInitialized_);
    +       }
    +       short lv_result = setupJNI();
    +       if (lv_result) {
    +          fprintf(stderr, "setupJNI returned error %d in TMLIB::initJNI. 
Exiting.\n", lv_result);
    +          fflush(stderr);
    +          abort();
    +       }
         }
    -
    +    initMutex_->unlock();
    --- End diff --
    
    Yes. I will move it within the else block because initMutext_ is locked in 
the else block.


---

Reply via email to