Changeset 17693
- Timestamp:
- May 14, 2008, 5:26:11 PM (18 years ago)
- Location:
- trunk/Nebulous
- Files:
-
- 3 edited
-
Changes (modified) (1 diff)
-
lib/Nebulous/Client.pm (modified) (26 diffs)
-
t/64_client_find_objects.t (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Nebulous/Changes
r17658 r17693 2 2 3 3 0.09 4 - overhaul SOAP fault message handling 5 - suppress non-existant key errors from Nebulous::Client->find_instances() 4 6 - in Nebulous::Client->stat(), handle the SOAP quirk of thinking an "undef" 5 7 return is a fault (even when no fault code is set). -
trunk/Nebulous/lib/Nebulous/Client.pm
r17658 r17693 1 1 # Copyright (c) 2004-2008 Joshua Hoblitt 2 2 # 3 # $Id: Client.pm,v 1.4 8 2008-05-13 23:05:48jhoblitt Exp $3 # $Id: Client.pm,v 1.49 2008-05-15 03:26:11 jhoblitt Exp $ 4 4 5 5 package Nebulous::Client; … … 38 38 type => SCALAR, 39 39 optional => 1, 40 default => ' warn',40 default => 'fatal', 41 41 callbacks => { 42 42 'is valid level' => sub { … … 115 115 my $response = $self->{ 'server' }->create_object( $key, @params ); 116 116 if ( $response->fault ) { 117 $log->error( $response->faultcode, " - ", $response->faultstring ); 117 $self->set_err($response->faultstring); 118 unless ($response->faultstring =~ /Duplicate entry/) { 119 $log->logdie("unhandled fault - ", $self->err); 120 } 121 118 122 $log->debug( "leaving" ); 119 123 … … 151 155 my $response = $self->{ 'server' }->create_object( $key, @params ); 152 156 if ( $response->fault ) { 153 $log->error( $response->faultcode, " - ", $response->faultstring ); 157 $self->set_err($response->faultstring); 158 unless ($response->faultstring =~ /Duplicate entry/) { 159 $log->logdie("unhandled fault - ", $self->err); 160 } 161 154 162 $log->debug( "leaving" ); 155 163 … … 204 212 my $response = $self->{ 'server' }->replicate_object( $key, @params ); 205 213 if ( $response->fault ) { 206 $log->error( $response->faultcode, " - ", $response->faultstring ); 207 $log->debug( "leaving" ); 208 209 return; 214 $self->set_err($response->faultstring); 215 $log->logdie("unhandled fault - ", $self->err); 210 216 } 211 217 … … 347 353 my $response = $self->{ 'server' }->lock_object( $key, $type ); 348 354 if ( $response->fault ) { 349 $log->error( $response->faultcode, " - ", $response->faultstring ); 350 $log->debug( "leaving" ); 351 352 # don't bother to spin lock if the object doesn't exist 353 if ( $response->faultstring =~ /storage object does not exist/ ) { 355 $self->set_err($response->faultstring); 356 357 # "retry" means we couldn't get a lock because one was already held 358 # and we should try again 359 if ( $response->faultstring =~ /retry/ ) { 360 $log->debug( "failed to get a $type lock..." ); 361 next; 362 } 363 364 if ($response->faultstring =~ /is valid object key/) { 365 $log->debug( "leaving" ); 354 366 return; 355 367 } 356 368 357 next;369 $log->logdie("unhandled fault - ", $self->err); 358 370 } 359 371 … … 398 410 my $response = $self->{ 'server' }->unlock_object( $key, $type ); 399 411 if ( $response->fault ) { 400 $log->error( $response->faultcode, " - ", $response->faultstring ); 401 $log->debug( "leaving" ); 402 403 return; 412 $self->set_err($response->faultstring); 413 414 # key doesn't exist 415 if ($response->faultstring =~ /is valid object key/) { 416 $log->debug( "leaving" ); 417 return; 418 } 419 420 # lock doesn't exist 421 if ($response->faultstring =~ /non-existant read lock/) { 422 $log->debug( "leaving" ); 423 return; 424 } 425 426 if ($response->faultstring =~ /non-existant write lock/) { 427 $log->debug( "leaving" ); 428 return; 429 } 430 431 if ($response->faultstring =~ /can not have a read lock under a write lock/) { 432 $log->debug( "leaving" ); 433 return; 434 } 435 436 if ($response->faultstring =~ /can not have a write lock under a read lock/) { 437 $log->debug( "leaving" ); 438 return; 439 } 440 441 $log->logdie("unhandled fault - ", $self->err); 404 442 } 405 443 … … 417 455 418 456 419 sub setxattr _object457 sub setxattr 420 458 { 421 459 my $self = shift; … … 442 480 443 481 my $response = $self->{ 'server' }->setxattr_object( $key, $name, $value, $flags); 444 if ( $response->fault ) { 445 $log->error( $response->faultcode, " - ", $response->faultstring ); 446 $log->debug( "leaving" ); 447 448 return; 482 if ($response->fault) { 483 $self->set_err($response->faultstring); 484 $log->logdie("unhandled fault - ", $self->err); 449 485 } 450 486 … … 455 491 456 492 457 sub getxattr _object493 sub getxattr 458 494 { 459 495 my $self = shift; … … 472 508 my $response = $self->{ 'server' }->getxattr_object( $key, $name ); 473 509 if ( $response->fault ) { 474 $log->error( $response->faultcode, " - ", $response->faultstring ); 475 $log->debug( "leaving" ); 476 477 return; 510 $self->set_err($response->faultstring); 511 $log->logdie("unhandled fault - ", $self->err); 478 512 } 479 513 … … 487 521 488 522 489 sub listxattr _object523 sub listxattr 490 524 { 491 525 my $self = shift; … … 501 535 my $response = $self->{ 'server' }->listxattr_object( $key ); 502 536 if ( $response->fault ) { 503 $log->error( $response->faultcode, " - ", $response->faultstring ); 504 $log->debug( "leaving" ); 505 506 return; 537 $self->set_err($response->faultstring); 538 $log->logdie("unhandled fault - ", $self->err); 507 539 } 508 540 … … 516 548 517 549 518 sub removexattr _object550 sub removexattr 519 551 { 520 552 my $self = shift; … … 533 565 my $response = $self->{ 'server' }->removexattr_object( $key, $name ); 534 566 if ( $response->fault ) { 535 $log->error( $response->faultcode, " - ", $response->faultstring ); 536 $log->debug( "leaving" ); 537 538 return; 567 $self->set_err($response->faultstring); 568 $log->logdie("unhandled fault - ", $self->err); 539 569 } 540 570 … … 548 578 my $self = shift; 549 579 550 my ( $pattern )= validate_pos( @_,580 my @args = validate_pos( @_, 551 581 { 552 582 type => SCALAR, … … 557 587 $log->debug( "entered - @_" ); 558 588 559 my $response = $self->{ 'server' }->find_objects( $pattern ); 560 if ( $response->fault ) { 561 $log->error( $response->faultcode, " - ", $response->faultstring ); 562 $log->debug( "leaving" ); 563 564 return; 589 my $response = $self->{ 'server' }->find_objects( @args ); 590 if ( $response->fault ) { 591 $self->set_err($response->faultstring); 592 593 if ($response->faultstring =~ /no keys found/) { 594 $log->debug( "leaving" ); 595 return; 596 } 597 598 $log->logdie("unhandled fault - ", $self->err); 565 599 } 566 600 … … 575 609 $log->debug( "leaving" ); 576 610 577 # note that no keys found is returned as []578 579 611 return $keys; 580 612 } … … 598 630 my $response = $self->{ 'server' }->find_instances( $key, @params ); 599 631 if ( $response->fault ) { 600 $log->error( $response->faultcode, " - ", $response->faultstring ); 601 $log->debug( "leaving" ); 602 603 return; 632 $self->set_err($response->faultstring); 633 # check to see if this failure is because $key doesn't exist 634 if ($response->faultstring =~ /is valid object key/) { 635 $log->debug( "leaving" ); 636 return; 637 } 638 639 $log->logdie("unhandled fault - ", $self->err); 604 640 } 605 641 … … 607 643 608 644 $log->debug( "server found: @$uris" ); 609 610 # foreach my $path ( @{ $uris } ) {611 # $path = _get_file_path( $path );612 # }613 645 614 646 $log->debug( "leaving" ); … … 806 838 my $response = $self->{ 'server' }->rename_object( $key, $new_key ); 807 839 if ( $response->fault ) { 808 $log->error( $response->faultcode, " - ", $response->faultstring ); 809 $log->debug( "leaving" ); 810 811 return; 840 $self->set_err($response->faultstring); 841 842 if ($response->faultstring =~ /is valid object key/) { 843 $log->debug( "leaving" ); 844 return; 845 } 846 847 $log->logdie("unhandled fault - ", $self->err); 812 848 } 813 849 … … 839 875 my $response = $self->{ 'server' }->delete_instance( $uri ); 840 876 if ( $response->fault ) { 841 $log->error( $response->faultcode, " - ", $response->faultstring ); 842 $log->debug( "leaving" ); 843 844 return; 877 $self->set_err($response->faultstring); 878 879 if ($response->faultstring =~ /no instance is associated with uri/) { 880 $log->debug( "leaving" ); 881 return; 882 } 883 884 $log->logdie("unhandled fault - ", $self->err); 845 885 } 846 886 … … 867 907 my $response = $self->{ 'server' }->mounts(); 868 908 if ( $response->fault ) { 869 $log->error( $response->faultcode, " - ", $response->faultstring ); 870 $log->debug( "leaving" ); 871 872 return; 909 $self->set_err($response->faultstring); 910 $log->logdie("unhandled fault - ", $self->err); 873 911 } 874 912 … … 893 931 my $response = $self->{ 'server' }->stat_object( $key ); 894 932 if ( $response->fault ) { 895 $self->set_err( $response->faultcode, " - ", $response->faultstring ); 896 $log->error( $self->err ); 897 $log->debug( "leaving" ); 898 899 return; 933 $self->set_err($response->faultstring); 934 if ($response->faultstring =~ /is valid object key/) { 935 $log->debug( "leaving" ); 936 return; 937 } 938 939 $log->logdie("unhandled fault - ", $self->err); 900 940 } 901 941 … … 904 944 my $stats = $response->result; 905 945 906 # SOAP can't actually send back a perl "undef" so what we get is an empty907 # string to indicate the key doesn't exist but there is no error.908 if ($stats eq "") {909 $stats = undef;910 }911 912 946 $log->debug( "leaving" ); 913 947 … … 926 960 my $self = shift; 927 961 928 $self->{ 'err' } = shift; 962 my $err_string = shift; 963 964 $self->{ 'err' } = $err_string; 965 966 local $Log::Log4perl::caller_depth += 1; 967 $log->error($err_string); 929 968 930 969 return $self; -
trunk/Nebulous/t/64_client_find_objects.t
r16232 r17693 3 3 # Copryight (C) 2004-2005 Joshua Hoblitt 4 4 # 5 # $Id: 64_client_find_objects.t,v 1. 2 2008-01-25 20:54:04jhoblitt Exp $5 # $Id: 64_client_find_objects.t,v 1.3 2008-05-15 03:26:11 jhoblitt Exp $ 6 6 7 7 use strict; … … 31 31 my $keys = $neb->find_objects(); 32 32 33 # undef indicates an error34 is($keys, undef, ' undef is an error');33 # currently returning everything is turned off 34 is($keys, undef, 'no keys found'); 35 35 } 36 36 … … 76 76 my $keys = $neb->find_objects( "bar" ); 77 77 78 is _deeply($keys, [], 'number ofkeys found');78 is($keys, undef, 'no keys found'); 79 79 } 80 80
Note:
See TracChangeset
for help on using the changeset viewer.
