1
1
#[ macro_use]
2
2
extern crate log;
3
3
4
+ // TODO: Fix 1330929912
5
+
4
6
use foundationdb as fdb;
5
7
use foundationdb_sys as fdb_sys;
6
8
@@ -706,8 +708,8 @@ impl StackMachine {
706
708
}
707
709
}
708
710
709
- fn push_directory_err ( & mut self , code : InstrCode , number : usize , err : DirectoryError ) {
710
- debug ! ( "DIRECTORY_ERROR during {:?}: {:?}" , code, err) ;
711
+ fn push_directory_err ( & mut self , code : & InstrCode , number : usize , err : DirectoryError ) {
712
+ error ! ( "DIRECTORY_ERROR during {:?}: {:?}" , code, err) ;
711
713
let packed = pack ( & ( ERROR_DIRECTORY ) ) ;
712
714
self . push ( number, Element :: Bytes ( packed. into ( ) ) ) ;
713
715
@@ -719,8 +721,8 @@ impl StackMachine {
719
721
| InstrCode :: DirectoryMoveTo
720
722
| InstrCode :: DirectoryOpenSubspace = code
721
723
{
722
- debug ! (
723
- "pushed NULL in the directory_stack at index {} because of an error" ,
724
+ error ! (
725
+ "pushed NULL in the directory_stack at index {} because of the error" ,
724
726
self . directory_stack. len( )
725
727
) ;
726
728
self . directory_stack . push ( DirectoryStackItem :: Null ) ;
@@ -1738,7 +1740,7 @@ impl StackMachine {
1738
1740
}
1739
1741
} ;
1740
1742
1741
- let directory_subspace = match directory
1743
+ match directory
1742
1744
. create (
1743
1745
txn,
1744
1746
( * path. get ( 0 ) . unwrap ( ) . to_owned ( ) ) . to_vec ( ) ,
@@ -1747,23 +1749,23 @@ impl StackMachine {
1747
1749
)
1748
1750
. await
1749
1751
{
1750
- Ok ( s) => s,
1752
+ Ok ( directory_subspace) => {
1753
+ debug ! (
1754
+ "pushing created {:?} at index {}" ,
1755
+ & directory_subspace,
1756
+ self . directory_stack. len( )
1757
+ ) ;
1758
+ self . directory_stack
1759
+ . push ( DirectoryStackItem :: DirectorySubspace ( directory_subspace) ) ;
1760
+ }
1751
1761
Err ( e) => {
1752
- panic ! ( "could not call directory.create: {:?}" , e) ;
1762
+ self . push_directory_err ( & instr . code , number , e) ;
1753
1763
}
1754
1764
} ;
1755
-
1756
- debug ! (
1757
- "pushing created {:?} at index {}" ,
1758
- & directory_subspace,
1759
- self . directory_stack. len( )
1760
- ) ;
1761
- self . directory_stack
1762
- . push ( DirectoryStackItem :: DirectorySubspace ( directory_subspace) ) ;
1763
1765
}
1764
1766
1765
1767
DirectoryOpen => {
1766
- debug ! ( "Open stack: {:?}" , self . stack) ;
1768
+ debug ! ( "DirectoryOpen stack: {:?}" , self . stack) ;
1767
1769
1768
1770
let path = self . pop_tuple ( 1 ) . await ;
1769
1771
let bytes_layer = self . pop_bytes ( ) . await ;
@@ -1785,24 +1787,23 @@ impl StackMachine {
1785
1787
}
1786
1788
} ;
1787
1789
1788
- let directory_subspace = match directory
1790
+ match directory
1789
1791
. open ( txn, ( * path. get ( 0 ) . unwrap ( ) . to_owned ( ) ) . to_vec ( ) , layer)
1790
1792
. await
1791
1793
{
1792
- Ok ( s) => s,
1794
+ Ok ( directory_subspace) => {
1795
+ debug ! (
1796
+ "pushing newly opened {:?} at index {}" ,
1797
+ & directory_subspace,
1798
+ self . directory_stack. len( )
1799
+ ) ;
1800
+ self . directory_stack
1801
+ . push ( DirectoryStackItem :: DirectorySubspace ( directory_subspace) ) ;
1802
+ }
1793
1803
Err ( e) => {
1794
- self . push_directory_err ( instr. code , number, e) ;
1795
- return Err ( ( ) ) ;
1804
+ self . push_directory_err ( & instr. code , number, e) ;
1796
1805
}
1797
1806
} ;
1798
-
1799
- debug ! (
1800
- "pushing newly opened {:?} at index {}" ,
1801
- & directory_subspace,
1802
- self . directory_stack. len( )
1803
- ) ;
1804
- self . directory_stack
1805
- . push ( DirectoryStackItem :: DirectorySubspace ( directory_subspace) ) ;
1806
1807
}
1807
1808
1808
1809
// Use the current directory for this operation.
@@ -1989,21 +1990,20 @@ impl StackMachine {
1989
1990
1990
1991
let paths = paths. get ( 0 ) . expect ( "could not retrieve a path" ) ;
1991
1992
1992
- let children = match directory. list ( txn, paths. to_vec ( ) ) . await {
1993
- Ok ( v) => v,
1993
+ match directory. list ( txn, paths. to_vec ( ) ) . await {
1994
+ Ok ( children) => {
1995
+ let mut elements: Vec < Element > = vec ! [ ] ;
1996
+ for child in children {
1997
+ let element = Element :: String ( Cow :: from ( child) ) ;
1998
+ elements. push ( element) ;
1999
+ }
2000
+ let tuple = Element :: Tuple ( elements) ;
2001
+ self . push ( number, Element :: Bytes ( pack ( & tuple) . into ( ) ) ) ;
2002
+ }
1994
2003
Err ( e) => {
1995
- self . push_directory_err ( instr. code , number, e) ;
1996
- return Err ( ( ) ) ;
2004
+ self . push_directory_err ( & instr. code , number, e) ;
1997
2005
}
1998
2006
} ;
1999
-
2000
- let mut elements: Vec < Element > = vec ! [ ] ;
2001
- for child in children {
2002
- let element = Element :: String ( Cow :: from ( child) ) ;
2003
- elements. push ( element) ;
2004
- }
2005
- let tuple = Element :: Tuple ( elements) ;
2006
- self . push ( number, Element :: Bytes ( pack ( & tuple) . into ( ) ) ) ;
2007
2007
}
2008
2008
2009
2009
// Use the current directory for this operation.
@@ -2029,14 +2029,14 @@ impl StackMachine {
2029
2029
} ;
2030
2030
2031
2031
let paths = paths. get ( 0 ) . expect ( "could not retrieve a path" ) ;
2032
- let exists = match directory. exists ( txn, paths. to_owned ( ) ) . await {
2033
- Ok ( exist) => exist,
2032
+ match directory. exists ( txn, paths. to_owned ( ) ) . await {
2033
+ Ok ( exists) => {
2034
+ self . push ( number, Element :: Int ( i64:: from ( exists) ) ) ;
2035
+ }
2034
2036
Err ( e) => {
2035
- self . push_directory_err ( instr. code , number, e) ;
2036
- return Err ( ( ) ) ;
2037
+ self . push_directory_err ( & instr. code , number, e) ;
2037
2038
}
2038
2039
} ;
2039
- self . push ( number, Element :: Int ( i64:: from ( exists) ) ) ;
2040
2040
}
2041
2041
2042
2042
// Use the current directory for this operation.
0 commit comments