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 [email protected]
>>>>> Note that posts from new members are moderated - please be patient with
>>>>> your first post.
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]
>>>>> 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 [email protected]
>>>> Note that posts from new members are moderated - please be patient with
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> [email protected]
>>>> 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 [email protected]
>>> Note that posts from new members are moderated - please be patient with
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> 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 [email protected]
>> Note that posts from new members are moderated - please be patient with your
>> first post.
>> To unsubscribe from this group, send email to
>> [email protected]
>> 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 [email protected]
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> [email protected]
> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
