This is found in apachesolr.module on line 1292:
if (!isset($status[$key])) {
$ping = FALSE;
try {
// Takes advantage of auto-loading.
// @Todo : Do we have to specify the env_id?
$solr = new $class($url);
$ping = @$solr->ping(variable_get('apachesolr_ping_timeout', 4));
}
catch (Exception $e) {
watchdog('Apache Solr', nl2br(check_plain($e->getMessage())), NULL, WATCHDOG_ERROR);
}
$status[$key] = $ping;
}
return $status[$key];
It bombs when it tries to load the Acquia_Search_Service class. When I look at Acquia_Search_Service.php the actual class name doesn't have underscores. Looking at the code I don't see where Acquia_Search_Service.php is supposed to be loaded? Maybe there is some setting somewhere I am missing?
Comments
Comment #1
drupalninja99 commentedIt looks like the code in apachesolr_update_7000() maybe isn't quite right which might mean this is an apachesolr issue.
The class seems to be wrong after this update.
Comment #2
nick_vhCan you specify which version of Apache Solr?
Comment #3
drupalninja99 commentedOh I am using Acquia Search, so whatever version they use. The module version is 7.x-2.4
Comment #4
nick_vhRight, but you also downloaded the Apache Solr Search Integration module I expect? What version is that?
Comment #5
drupalninja99 commentedOh sorry, yes I have the latest version 7.x-1.0-beta19
Comment #6
nick_vhSorry for not getting back to you
Could you try with latest dev version if this is still not resolved? And also uninstall/reinstall those modules completely. Perhaps something went wrong in the beta
Comment #7
jbrauer commentedExperiencing this error in a site upgraded from D6 to D7 with the 2.6 version of the module
Comment #8
jbrauer commentedSo some more digging reveals that even after disabling and uninstalling both the ApacheSolr modules and all of the Acquia Connector (including search) modules the variables in the attached table remain. In particular the apachesolr_service_class is set to "Acquia_Search_Service".
In line 1058 of apachesolr.module this becomes the $class variable which causes a problem since the class definition is now AcquiaSearchService:
$solr = new $class($environments[$env_id]['url'], $env_id);
Once this is deleted and one manages to fiddle with the indexes and make the Acquia Search Service the default index things seem reasonable.
So I would propose that although this is a "apachesolr" variable it would be reasonable for a update function in acquia_search to check and see and if the value is set to the offending Acquia_Search_Service that it be reset or unset.
Comment #9
nick_vhI followed the workflow and understand where you are coming from
Something like this should be sufficient normally for the upgrade path. Can you confirm this is what you had in mind?
Comment #10
pwolanin commentedThe general nature of the update looks ok, but it's looking for the wrong class name. The error is caused by 'Acquia_Search_Service'.
The update in this patch is more generic.
Comment #11
pwolanin commentedComment #12
jbrauer commented#10 looks good. I hope to have time to test it in the next couple of days.
Comment #13
pwolanin commentedcommitted
Comment #15
pauln600 commentedI'm still getting this error, in spite of applying the patch in #10.
Paul N.
Comment #16
pwolanin commentedDid you run update.php after applying the patch?
Comment #17
coltraneComment #18
pwolanin commented