projects
/
cloudstore.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
use memcached session bucket for usage
[cloudstore.git]
/
lib
/
CloudStore
/
Couchbase.pm
diff --git
a/lib/CloudStore/Couchbase.pm
b/lib/CloudStore/Couchbase.pm
index
5f9e2d8
..
7585784
100644
(file)
--- a/
lib/CloudStore/Couchbase.pm
+++ b/
lib/CloudStore/Couchbase.pm
@@
-12,7
+12,7
@@
use Data::Dump qw(dump);
my $buckets = {
files => 5800,
my $buckets = {
files => 5800,
-
usage
=> 5801,
+
session
=> 5801,
};
sub new {
};
sub new {
@@
-42,22
+42,28
@@
sub new {
sub usage_decr {
my ($self,$data) = @_;
sub usage_decr {
my ($self,$data) = @_;
- $self->{
usage}->decr( $data->{login}
=> $data->{size} );
+ $self->{
session}->decr( $data->{login} . ':usage'
=> $data->{size} );
}
sub usage_incr {
my ($self,$data) = @_;
}
sub usage_incr {
my ($self,$data) = @_;
- $self->{
usage}->incr( $data->{login}
=> $data->{size} );
+ $self->{
session}->incr( $data->{login} . ':usage'
=> $data->{size} );
}
sub usage {
my ($self,$data) = @_;
}
sub usage {
my ($self,$data) = @_;
- $self->{usage}->get( $data->{login} );
+ $self->{session}->get( $data->{login} . ':usage' );
+}
+
+sub _key {
+ my $data = shift;
+ #md5_base64( $data->{login} . '/' . $data->{file} );
+ $data->{login} . ':' . $data->{file};
}
sub file_set {
my ($self,$data) = @_;
}
sub file_set {
my ($self,$data) = @_;
- my $k =
md5_base64( $data->{login} . '/' . $data->{file} )
;
+ my $k =
_key $data
;
my $json = encode_json $data;
$self->{files}->set( $k => $json );
return $json;
my $json = encode_json $data;
$self->{files}->set( $k => $json );
return $json;
@@
-65,7
+71,7
@@
sub file_set {
sub file_get {
my ($self,$data) = @_;
sub file_get {
my ($self,$data) = @_;
- my $k =
md5_base64( $data->{login} . '/' . $data->{file} )
;
+ my $k =
_key $data
;
if ( my $json = $self->{files}->get($k) ) {
return decode_json $json;
}
if ( my $json = $self->{files}->get($k) ) {
return decode_json $json;
}
@@
-90,7
+96,7
@@
sub new_file {
sub remove_file {
my ( $self, $data ) = @_;
$self->usage_decr( $data );
sub remove_file {
my ( $self, $data ) = @_;
$self->usage_decr( $data );
- my $k =
md5_base64( $data->{login} . '/' . $data->{file} )
;
+ my $k =
_key $data
;
$self->{files}->delete( $k );
}
$self->{files}->delete( $k );
}
@@
-99,16
+105,9
@@
sub make_dir {
}
}
-sub remove_dir {
- my ( $self, $data ) = @_;
-
-}
-
sub transfer {
my ( $self,$data ) = @_;
sub transfer {
my ( $self,$data ) = @_;
- $data->{base64_path} ||= md5_base64( $data->{login} . '/' . $data->{file} );
-
my $blob = "users/$data->{login}/blob";
my $path = "$blob/$data->{file}";
my $blob = "users/$data->{login}/blob";
my $path = "$blob/$data->{file}";
@@
-124,13
+123,7
@@
sub transfer {
die "unknown type $type ", dump $data;
}
} elsif ( $data->{itemize} =~ m/\*deleting/ ) {
die "unknown type $type ", dump $data;
}
} elsif ( $data->{itemize} =~ m/\*deleting/ ) {
- if ( -d $path ) {
- $self->remove_dir($data);
- } elsif ( -f $path ) {
- $self->remove_file($data);
- } else {
- die "unknown delete ", dump $data;
- }
+ $self->remove_file($data);
}
return $data;
}
}
return $data;
}
@@
-172,16
+165,18
@@
sub dedup {
my $new = "users/$data->{login}/blob/$dir$file";
if ( ! -e $new ) {
# create path from md5sum file
my $new = "users/$data->{login}/blob/$dir$file";
if ( ! -e $new ) {
# create path from md5sum file
- my $dir = $1 if $new =~ m{^(.+)/[^/]+$};
- make_path $
dir unless -d $
dir;
+ my $
only_
dir = $1 if $new =~ m{^(.+)/[^/]+$};
+ make_path $
only_dir unless -d $only_
dir;
$imported += link "md5/$md5", $new;
$imported += link "md5/$md5", $new;
-
$self->new_file(
{
+
my $fake =
{
login => $data->{login},
host => $data->{host},
file => $dir . $file,
md5 => $md5,
size => -s $new,
login => $data->{login},
host => $data->{host},
file => $dir . $file,
md5 => $md5,
size => -s $new,
- });
+ };
+ $self->new_file($fake);
+ warn "fake ",dump($fake);
} else {
md5pool $new => $md5;
}
} else {
md5pool $new => $md5;
}