Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-29718

mapreduce_nif.so has the incorrect RPath set

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 5.5.0
    • 4.6.4, 5.1.0, 5.5.0
    • build, view-engine
    • None
    • Untriaged
    • 2
    • Unknown
    • Build Team 2018 Sprint 10

    Description

      Currently the view engine is incorrectly the RPath for the mapreduce_nif.so which means that if you're running a non-root install alongside a (non-running) package installation it will fail to start with the following error:

      [error_logger:error,2018-04-06T02:01:01.276-05:00,couchdb_ns_1@127.0.0.1:error_logger<0.6.0>:ale_error_logger_handler:do_log:203]
      =========================CRASH REPORT=========================
        crasher:
          initial call: application_master:init/4
          pid: <0.38.0>
          registered_name: []
          exception exit: {{shutdown,
                            {failed_to_start_child,cb_couch_sup,
                             {shutdown,
                              {failed_to_start_child,couch_app,
                               {'EXIT',
                                {{badmatch,
                                  {error,
                                   {shutdown,
                                    {failed_to_start_child,
                                     couch_secondary_services,
                                     {shutdown,
                                      {failed_to_start_child,
                                       spatial_view_manager_dev,
                                       {mapreduce_nif_not_loaded,
                                        [{erlang,nif_error,
                                          [mapreduce_nif_not_loaded],
                                          []},
                                         {mapreduce,set_timeout,1,
                                          [{file,
                                            "/home/couchbase/jenkins/workspace/couchbase-server-unix/couchdb/src/mapreduce/mapreduce.erl"},
                                           {line,78}]},
                                         {couch_set_view,init,1,
                                          [{file,
                                            "/home/couchbase/jenkins/workspace/couchbase-server-unix/couchdb/src/couch_set_view/src/couch_set_view.erl"},
                                           {line,911}]},
                                         {gen_server,init_it,6,
                                          [{file,"gen_server.erl"},{line,304}]},
                                         {proc_lib,init_p_do_apply,3,
                                          [{file,"proc_lib.erl"},
                                           {line,239}]}]}}}}}}},
                                 [{couch_server_sup,start_server,1,
                                   [{file,
                                     "/home/couchbase/jenkins/workspace/couchbase-server-unix/couchdb/src/couchdb/couch_server_sup.erl"},
                                    {line,102}]},
                                  {supervisor,do_start_child,2,
                                   [{file,"supervisor.erl"},{line,310}]},
                                  {supervisor,start_children,3,
                                   [{file,"supervisor.erl"},{line,293}]},
                                  {supervisor,init_children,2,
                                   [{file,"supervisor.erl"},{line,259}]},
                                  {gen_server,init_it,6,
                                   [{file,"gen_server.erl"},{line,304}]},
                                  {proc_lib,init_p_do_apply,3,
                                   [{file,"proc_lib.erl"},{line,239}]}]}}}}}},
                           {ns_couchdb,start,[normal,[]]}}
      

      The reason for this is that it has found libv8.so at the default location of /opt/couchbase (due to the package install), but there is a version mismatch.

      To fix this we need to ensure that the RPath for this shared object is set correctly to find the library in the relative install path.

      Workaround

      It's currently possible to workaround this issue by deleting the RPath of the mapreduce_nif.so using chrpath (may need to be installed):

      chrpath -d `find <install dir> -name mapreduce_nif.so`
      

      Attachments

        Issue Links

          For Gerrit Dashboard: MB-29718
          # Subject Branch Project Status CR V

          Activity

            People

              matt.carabine Matt Carabine (Inactive)
              matt.carabine Matt Carabine (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty