Changeset 24456
- Timestamp:
- 2011-08-24T13:48:52+12:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/solr/trunk/src/perllib/solrbuilder.pm
r24453 r24456 277 277 my ($url) = @_; 278 278 279 my $cmd = "wget -q -O - \"$url\""; 280 281 my $status = undef; 282 279 my $cmd = "wget -O - \"$url\" 2>&1"; 280 281 my $preamble_output = ""; 282 my $xml_output = ""; 283 my $error_output = undef; 284 285 my $in_preamble = 1; 286 283 287 if (open(WIN,"$cmd |")) { 284 288 285 my $xml_output = "";286 289 my $line; 287 290 while (defined ($line=<WIN>)) { 288 291 289 $xml_output .= $line; 292 if ($line =~ m/ERROR \d+:/) { 293 chomp $line; 294 $error_output = $line; 295 last; 296 } 297 elsif ($in_preamble) { 298 if ($line =~ m/<.*>/) { 299 $in_preamble = 0; 300 } 301 else { 302 $preamble_output .= $line; 303 } 304 } 305 306 if (!$in_preamble) { 307 $xml_output .= $line; 308 } 290 309 } 291 310 close(WIN); 292 311 293 ## print $xml_output;294 295 ($status) = ($xml_output =~ m!<int name="status">(\d+)</int>!s);296 297 312 } 298 313 else { 299 print STDERR "Warning: failed to run $cmd\n"; 300 print STDERR " $!\n"; 301 } 302 303 return $status; 304 314 $error_output = "Error: failed to run $cmd\n"; 315 $error_output .= " $!\n"; 316 } 317 318 my $output = { 'preamble' => $preamble_output, 319 'output' => $xml_output, 320 'error' => $error_output }; 321 322 return $output; 305 323 } 306 324 … … 402 420 my $collection = $self->{'collection'}; 403 421 422 # my $idx = $self->{'index_mapping'}->{$index}; 423 my $idx = "idx"; 424 404 425 foreach my $level (keys %{$self->{'levels'}}) { 405 426 427 my ($pindex) = $level =~ /^(.)/; 428 406 429 my $llevel = $mgppbuilder::level_map{$level}; 407 408 430 my $core = $collection."-".lc($llevel); 409 my $check_core_url = "$base_url?action=STATUS&core=$core"; 410 411 my $check_status = $self->solr_core_admin($check_core_url); 412 413 print STDERR "*** check status = $check_status\n"; 414 415 431 432 416 433 # if collect==core not already in solr.xml (check with STATUS) 417 434 # => use CREATE API to add to solr.xml … … 419 436 # else 420 437 # => use RELOAD call to refresh fields now expressed in schema.xml 438 439 440 my $check_core_url = "$base_url?action=STATUS&core=$core"; 441 my $output = $self->solr_core_admin($check_core_url); 442 443 if (defined $output->{'error'}) { 444 445 my $preamble = $output->{'preamble'}; 446 my $error = $output->{'error'}; 447 448 print STDERR "----\n"; 449 print STDERR "Error: Failed to get XML response from:\n"; 450 print STDERR " $check_core_url\n"; 451 print STDERR "Output was:\n"; 452 print STDERR $preamble if ($preamble ne ""); 453 print STDERR "$error\n"; 454 print STDERR "----\n"; 455 456 next; 457 } 458 459 # If the collection doesn't exist yet, then there will be 460 # an empty element of the form: 461 # <lst name="collect-doc"/> 462 # where 'collect' is the actual name of the collection, 463 # such as demo 464 465 my $xml_output = $output->{'output'}; 466 467 my $empty_element="<lst\\s+name=\"$core\"\\s*\\/>"; 468 469 my $check_core_exists = !($xml_output =~ m/$empty_element/s); 470 471 if ($check_core_exists) { 472 473 my $reload_core_url = "$base_url?action=RELOAD&core=$core"; 474 475 print $outhandle "Reloading Solr core: $core\n"; 476 $self->solr_core_admin($reload_core_url); 477 } 478 else { 479 480 my $collect_home = $ENV{'GSDLCOLLECTDIR'}; 481 my $etc_dirname = &util::filename_cat($collect_home,"etc"); 482 483 my $build_dir = $self->{'build_dir'}; 484 my $idx_dirname = &util::filename_cat($build_dir,$pindex.$idx); 485 486 my $create_core_url = "$base_url?action=CREATE&name=$core"; 487 $create_core_url .= "&instanceDir=$etc_dirname"; 488 $create_core_url .= "&dataDir=$idx_dirname"; 489 490 print $outhandle "Creating Solr core: $core\n"; 491 $self->solr_core_admin($create_core_url); 492 } 421 493 } 422 494
Note:
See TracChangeset
for help on using the changeset viewer.