Hi David,

thanks for looking into this so promptly. Sadly 0.5.1 just throws a different 
exception:

user=> (def client (connect "127.0.0.1"))                                       
                                                                                
                          
#'user/client                                                                   
                                                                                
                          
user=> (def r0 (zk-ref client "/r0" 0))                                         
                                                                                
                          
java.lang.RuntimeException: 
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode 
for /stm/history/t-                                                             
run-in-transaction exception:  #<RuntimeException java.lang.RuntimeException: 
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode 
for /stm/history/t-> nil      
        at clojure.lang.Util.runtimeException(Util.java:165)                    
                                                                                
                           
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:35)       
                                                                                
                          
        at avout.transaction$run_in_transaction.invoke(transaction.clj:356)     
                                                                                
                          
        at avout.core$zk_ref.doInvoke(core.clj:51)                              
                                                                                
                           
        at clojure.lang.RestFn.invoke(RestFn.java:445)                          
                                                                                
                           
        at clojure.lang.AFn.applyToHelper(AFn.java:167)                         
                                                                                
                          
        at clojure.lang.RestFn.applyTo(RestFn.java:132)                         
                                                                                
                          
        at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3337)            
                                                                                
                           
        at clojure.lang.Compiler$DefExpr.eval(Compiler.java:375)                
                                                                                
                           
        at clojure.lang.Compiler.eval(Compiler.java:6470)                       
                                                                                
                          
        at clojure.lang.Compiler.eval(Compiler.java:6431)                       
                                                                                
                          
        at clojure.core$eval.invoke(core.clj:2795)                              
                                                                                
                           
        at clojure.main$repl$read_eval_print__5967.invoke(main.clj:244)         
                                                                                
                          
        at clojure.main$repl$fn__5972.invoke(main.clj:265)                      
                                                                                
                           
        at clojure.main$repl.doInvoke(main.clj:265)                             
                                                                                
                          
        at clojure.lang.RestFn.invoke(RestFn.java:512)                          
                                                                                
                           
        at user$eval27$acc__3869__auto____30$fn__32.invoke(NO_SOURCE_FILE:1)    
                                                                                
                           
        at clojure.lang.AFn.run(AFn.java:24)                                    
                                                                                
                           
        at java.lang.Thread.run(Thread.java#'user/r0                            
                                                                                
                           
user=> :680)                                                                    
                                                                                
                           
Caused by: org.apache.zookeeper.KeeperException$NoNodeException: 
KeeperErrorCode = NoNode for /stm/history/t-                                    
                                         
        at 
org.apache.zookeeper.KeeperException.create(KeeperException.java:102)           
                                                                                
                
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:42) 
                                                                                
                          
        at org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:637)            
                                                                                
                           
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)          
                                                                                
                           
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   
                                                                                
                
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                                                                
           
        at java.lang.reflect.Method.invoke(Method.java:597)                     
                                                                                
                          
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:92)       
                                                                                
                          
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)       
                                                                                
                          
        at zookeeper$create.doInvoke(zookeeper.clj:158)                         
                                                                                
                          
        at clojure.lang.RestFn.invoke(RestFn.java:521)                          
                                                                                
                           
        at avout.transaction$next_point.invoke(transaction.clj:62)              
                                                                                
                           
        at avout.transaction$reincarnate_txn.invoke(transaction.clj:233)        
                                                                                
                           
        at avout.transaction$stop$fn__1104.invoke(transaction.clj:243)          
                                                                                
                           
        at avout.transaction$stop.invoke(transaction.clj:238)                   
                                                                                
                          
        at 
avout.transaction.LockingTransaction$fn__1117.invoke(transaction.clj:323)       
                                                                                
                
        at 
avout.transaction.LockingTransaction.runInTransaction(transaction.clj:303)      
                                                                                
               
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)          
                                                                                
                           
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   
                                                                                
                
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                                                                
           
        at java.lang.reflect.Method.invoke(Method.java:597)                     
                                                                                
                          
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:92)       
                                                                                
                          
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)       
                                                                                
                          
        ... 17 more    


also, trying to avoid setting the value on creation of the ref doesn't work 
either:                                                                         
                                                                                
          
                                                                                
                                                                                
                         

user=> (def r1 (zk-ref client "/r1"))                                           
                                                                                
                        
#'user/r1                                                                       
                                                                                
                        
user=> (dosync!! client (ref-set!! r1 0))                                       
                                                                                
                        
java.lang.RuntimeException: 
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode 
for /stm/history/t-                                                           
run-in-transaction exception:  #<RuntimeException java.lang.RuntimeException: 
org.apache.zookeeper.KeeperException$NoNodeException: KeeperErrorCode = NoNode 
for /stm/history/t-> nil    
nil                                                                             
                                                                                
                        
        at clojure.lang.Util.runtimeException(Util.java:165)                    
                                                                                
                         
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:35)       
                                                                                
                        
        at avout.transaction$run_in_transaction.invoke(transaction.clj:356)     
                                                                                
                        
        at user$eval1426.invoke(NO_SOURCE_FILE:49)                              
                                                                                
                         
        at clojure.lang.Compiler.eval(Compiler.java:6465)                       
                                                                                
                        
        at clojure.lang.Compiler.eval(Compiler.java:6431)                       
                                                                                
                        
        at clojure.core$eval.invoke(core.clj:2795)                              
                                                                                
                         
        at clojure.main$repl$read_eval_print__5967.invoke(main.clj:244)         
                                                                                
                        
        at clojure.main$repl$fn__5972.invoke(main.clj:265)                      
                                                                                
                         
        at clojure.main$repl.doInvoke(main.clj:265)                             
                                                                                
                        
        at clojure.lang.RestFn.invoke(RestFn.java:512)                          
                                                                                
                         
        at user$eval27$acc__3869__auto____30$fn__32.invoke(NO_SOURCE_FILE:1)    
                                                                                
                         
        at clojure.lang.AFn.run(AFn.java:24)                                    
                                                                                
                         
        at java.lang.Thread.run(Thread.java:680)                                
                                                                                
                         
Caused by: org.apache.zookeeper.KeeperException$NoNodeException: 
KeeperErrorCode = NoNode for /stm/history/t-                                    
                                       
        at 
org.apache.zookeeper.KeeperException.create(KeeperException.java:102)           
                                                                                
              
        at org.apache.zookeeper.KeeperException.create(KeeperException.java:42) 
                                                                                
                        
        atuser=>  org.apache.zookeeper.ZooKeeper.create(ZooKeeper.java:637)     
                                                                                
                        
        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)          
                                                                                
                         
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                                                                
         
        at java.lang.reflect.Method.invoke(Method.java:597)                     
                                                                                
                        
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:92)       
                                                                                
                        
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)       
                                                                                
                        
        at zookeeper$create.doInvoke(zookeeper.clj:158)                         
                                                                                
                        
        at clojure.lang.RestFn.invoke(RestFn.java:521)                          
                                                                                
                         
        at avout.transaction$next_point.invoke(transaction.clj:62)              
                                                                                
                         
        at avout.transaction$reincarnate_txn.invoke(transaction.clj:233)        
                                                                                
                         
        at avout.transaction$stop$fn__1104.invoke(transaction.clj:243)          
                                                                                
                         
        at avout.transaction$stop.invoke(transaction.clj:238)                   
                                                                                
                        
        at 
avout.transaction.LockingTransaction$fn__1117.invoke(transaction.clj:323)       
                                                                                
              
        at 
avout.transaction.LockingTransaction.runInTransaction(transaction.clj:303)      
                                                                                
             
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)          
                                                                                
                         
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   
                                                                                
              
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                                                                                
         
        at java.lang.reflect.Method.invoke(Method.java:597)                     
                                                                                
                        
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:92)       
                                                                                
                        
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30)       
                                                                                
                        
        ... 12 more          

Sam

---
http://sam.aaron.name
                                                                                
                                                                           
On 1 Dec 2011, at 17:04, David Edgar Liebke wrote:

> Thanks Sam and Edmund, 
> 
> The stack traces were helpful, I think I understand what the immediate 
> problem is. It appears that the transaction ID in these cases is not getting 
> set, and then Avout is trying to write data to the ZooKeeper node 
> /stm/history/ instead of /stm/history/txid.
> 
> Since I can't replicate the problem with my setup, I can't be certain of the 
> cause, but I've added a patch to make the STM more robust in the face of a 
> nil transaction ID, and have updated Avout to version 0.5.1.
> 
> Can you guys give the version 0.5.1 a try and see if makes a difference?
> 
> If you still see the problem, another diagnostic would be to create a ref 
> without an initial value, and see if that succeeds, then try setting the 
> value.
> 
> (def r1 (zk-ref client "/r1"))
> (dosync!! client (ref-set!! r1 0))
> 
> Thanks again,
> David
> 
> 
> 
> On Dec 1, 2011, at 11:20 AM, Sam Aaron wrote:
> 
>> Hi David,
>> 
>> I nuked all my zookeeper deps in my lib and ~/.m2 dirs, but similar to 
>> Edmund experience it doesn't fix anything. My stacktrace is also identical:
>> 
>> ∴ /Users/sam/tmp/avv                                                         
>>                                                           
>> λ lein deps                                                                  
>>                                                           
>> Downloading: zookeeper-clj/zookeeper-clj/0.9.0/zookeeper-clj-0.9.0.pom from 
>> repository clojars at http://clojars.org/repo/             
>> Transferring 2K from clojars                                                 
>>                                                           
>> Downloading: zookeeper-clj/zookeeper-clj/0.9.0/zookeeper-clj-0.9.0.jar from 
>> repository clojars at http://clojars.org/repo/             
>> Transferring 9K from clojars                                                 
>>                                                           
>> Copying 8 files to /Users/sam/tmp/avv/lib                                    
>>                                                           
>> Copying 5 files to /Users/sam/tmp/avv/lib/dev                                
>>                                                           
>> 
>> ∴ /Users/sam/tmp/avv                                                         
>>                                                           
>> λ lein repl                                                                  
>>                                                           
>> Listening for transport dt_socket at address: 52602                          
>>                                                           
>> REPL started; server listening on localhost port 33063                       
>>                                                           
>> user=> (use 'avout.core)                                                     
>>                                                           
>> log4j:WARN No appenders could be found for logger 
>> (org.apache.zookeeper.ZooKeeper).                                            
>>         
>> log4j:WARN Please initialize the log4j system properly.                      
>>                                                           
>> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for 
>> more info.                                                    
>> nil                                                                          
>>                                                           
>> user=> (def client (connect "127.0.0.1"))                                    
>>                                                           
>> #'user/client                                                                
>>                                                           
>> user=> (def r0 (zk-ref client "/r0" 0))                                      
>>                                                           
>> java.lang.IllegalArgumentException: Path must not end with / character       
>>                                                           
>> run-in-transaction exception:  #<IllegalArgumentException 
>> java.lang.IllegalArgumentException: Path must not end with / character> nil  
>>       at 
>> org.apache.zookeeper.common.PathUtils.validatePath(PathUtils.java:58)        
>>                                                
>>       at org.apache.zookeeper.ZooKeeper.setData(ZooKeeper.java:1025)         
>>                                                         
>>       at zookeeper$set_data.doInvoke(zookeeper.clj:394)                      
>>                                                         
>>       at clojure.lang.RestFn.invoke(RestFn.java:470)                         
>>                                                         
>>       at avout.transaction$update_txn_state.invoke(transaction.clj:82)       
>>                                                         
>>       at avout.transaction$stop$fn__1104.invoke(transaction.clj:239)         
>>                                                         
>>       at avout.transaction$stop.invoke(transaction.clj:238)                  
>>                                                         
>>       at 
>> avout.transaction.LockingTransaction$fn__1117.invoke(transaction.clj:321)    
>>                                                
>>       at 
>> avout.transaction.LockingTransaction.runInTransaction(transaction.clj:301)   
>>                                                
>>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)         
>>                                                         
>>       at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>                                                
>>       at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>                                        
>>       at java.lang.reflect.Method.invoke(Method.java:597)                    
>>                                                         
>>       at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:92)      
>>                                                         
>>       at 
>> clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:30#'user/r0       
>>                                                
>> user=> )                                                                     
>>                                                           
>>       at avout.transaction$run_in_transaction.invoke(transaction.clj:354)    
>>                                                         
>>       at avout.core$zk_ref.doInvoke(core.clj:51)                             
>>                                                         
>>       at clojure.lang.RestFn.invoke(RestFn.java:445)                         
>>                                                         
>>       at clojure.lang.AFn.applyToHelper(AFn.java:167)                        
>>                                                         
>>       at clojure.lang.RestFn.applyTo(RestFn.java:132)                        
>>                                                         
>>       at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3337)           
>>                                                         
>>       at clojure.lang.Compiler$DefExpr.eval(Compiler.java:375)               
>>                                                         
>>       at clojure.lang.Compiler.eval(Compiler.java:6470)                      
>>                                                         
>>       at clojure.lang.Compiler.eval(Compiler.java:6431)                      
>>                                                         
>>       at clojure.core$eval.invoke(core.clj:2795)                             
>>                                                         
>>       at clojure.main$repl$read_eval_print__5967.invoke(main.clj:244)        
>>                                                         
>>       at clojure.main$repl$fn__5972.invoke(main.clj:265)                     
>>                                                         
>>       at clojure.main$repl.doInvoke(main.clj:265)                            
>>                                                         
>>       at clojure.lang.RestFn.invoke(RestFn.java:512)                         
>>                                                         
>>       at user$eval27$acc__3869__auto____30$fn__32.invoke(NO_SOURCE_FILE:1)   
>>                                                         
>>       at clojure.lang.AFn.run(AFn.java:24)                                   
>>                                                         
>>       at java.lang.Thread.run(Thread.java:680)                               
>>                                                         
>> 
>> Sam
>> 
>> ---
>> http://sam.aaron.name
>> 
>> On 1 Dec 2011, at 15:39, David Edgar Liebke wrote:
>> 
>>> Hi Sam,
>>> 
>>>> run-in-transaction exception:  #<IllegalArgumentException 
>>>> java.lang.IllegalArgumentException: Path must not end with / character> 
>>>> nil 
>>> 
>>> Very interesting, I wouldn't expect that particular exception unless you 
>>> named the zk-ref "/r0/" instead of "/r0", which you apparently didn't. 
>>> 
>>> And even when I do call it "/r0/" I get the "Path must not end with / 
>>> character" exception at a different point in the code, which is probably 
>>> the result of a patch I added to zookeeper-clj yesterday. 
>>> 
>>> Can you try deleting the zookeeper-clj jar file from your dependencies, 
>>> blowing about your ~/.m2/repository/zookeeper-clj directory, reloading your 
>>> deps, and trying again?
>>> 
>>> David
>>> 
>>> 
>>> On Dec 1, 2011, at 10:04 AM, Sam Aaron wrote:
>>> 
>>>> Hi David,
>>>> 
>>>> I'm super excited by Avout. It seems *better* than magic in that it not 
>>>> only appears to make complicated things possible, but also in a 
>>>> conceptually transparent way. Crazy cool.
>>>> 
>>>> I'm about to look into this in detail, but I thought I'd just post an 
>>>> issue I'm having with the basic example just on the off-chance that I'm 
>>>> doing something obviously wrong.
>>>> 
>>>> I have zookeeper 3.3.3 installed running on port 2181 with a valid dataDir 
>>>> path with the appropriate permissions. I'm got avout 0.5.0 and in a REPL 
>>>> session I do the following:
>>>> 
>>>> ; SLIME 2009-10-15                                                         
>>>>                                                           
>>>> user> (use 'avout.core)                                                    
>>>>                                                            
>>>> nil                                                                        
>>>>                                                            
>>>> user> (def client (connect "127.0.0.1"))                                   
>>>>                                                           
>>>> #'user/client                                                              
>>>>                                                            
>>>> user> (def r0 (zk-ref client "/r0" 0))                                     
>>>>                                                           
>>>> run-in-transaction exception:  #<IllegalArgumentException 
>>>> java.lang.IllegalArgumentException: Path must not end with / character> 
>>>> nil 
>>>> #'user/r0                                                                  
>>>>                                                            
>>>> user> r0                                                                   
>>>>                                                           
>>>> #<DistributedReference@761b2f32: nil>                                      
>>>>                                                            
>>>> user> @r0                                                                  
>>>>                                                            
>>>> nil                                                                        
>>>>                                           
>>>> 
>>>> Sam
>>>> 
>>>> ---
>>>> http://sam.aaron.name
>>>> 
>>>> 
>>>> On 29 Nov 2011, at 17:38, liebke wrote:
>>>> 
>>>>> Today we are releasing Avout, which brings Clojure's in-memory model
>>>>> of state to distributed application development by providing a
>>>>> distributed implementation of Clojure's Multiversion Concurrency
>>>>> Control (MVCC) STM along with distributable, durable, and extendable
>>>>> versions of Clojure's Atom and Ref concurrency primitives.
>>>>> 
>>>>> Here's the post announcing the project: 
>>>>> http://clojure.com/blog/2011/11/29/avout.html
>>>>> 
>>>>> And here's the project's website: http://avout.io
>>>>> 
>>>>> 
>>>>> David
>>>>> 
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Clojure" group.
>>>>> To post to this group, send email to clojure@googlegroups.com
>>>>> Note that posts from new members are moderated - please be patient with 
>>>>> your first post.
>>>>> To unsubscribe from this group, send email to
>>>>> clojure+unsubscr...@googlegroups.com
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/clojure?hl=en
>>>> 
>>>> -- 
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clojure@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+unsubscr...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>> 
>>> -- 
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>> 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with your 
>> first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to