storage_participant initialize() runs two times in jruby

6 views
Skip to first unread message

Gonzalo Suárez

unread,
Jan 17, 2011, 5:33:53 AM1/17/11
to openwferu-users
Hi all,

I found a curious thing. When running ruote-kit with ruby 1.8.7
(2009-06-12 patchlevel 174) [universal-darwin10.0], the initialize
method for storage_participant is called once every time the engine
gives a workitem (apply) to a participant of such kind. Reasonable.

But when I do the same thing with jruby 1.5.3 (ruby 1.8.7 patchlevel
249) (2010-09-28 7ca06d7) (Java HotSpot(TM) Client VM 1.6.0_21)
[i386-java], the method is called twice.

The settings I used for ruote are the ones in default Ruote-Kit's
config.ru, 1 engine, 1 worker. I guess this issue has only impact on
the performance when running within jruby.

Best regards,

Gonzalo.

John Mettraux

unread,
Jan 17, 2011, 5:54:02 AM1/17/11
to openwfe...@googlegroups.com

Hello Gonzalo,

I'd be very interested to know why it's triggered twice.

Maybe you could place a "puts caller" in your initializer (or in the storage participant initializer) so that we know when it gets called.

What do you think ?

--
John Mettraux - http://jmettraux.wordpress.com

Gonzalo Suárez

unread,
Jan 17, 2011, 6:44:31 AM1/17/11
to openwfe...@googlegroups.com
Hi John,

I added a "puts caller" and here is what i got: (jruby)

first caller execution:

--8--

/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
`new'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
`instantiate'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/fe_participant.rb:245:in
`schedule_timeout'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/fe_participant.rb:154:in
`apply'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/fe_ref.rb:117:in
`apply'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/flowexpression.rb:224:in
`do_apply'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:310:in
`launch'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:221:in
`process'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:166:in `step'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:73:in `run'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in
`run_in_thread'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in
`initialize'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in `new'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in
`run_in_thread'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/engine.rb:70:in
`initialize'
config.ru:46:in `new'
config.ru:46
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/builder.rb:46:in
`instance_eval'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/builder.rb:46:in
`initialize'
config.ru:1:in `new'
config.ru:1
:1:in `eval'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/builder.rb:35:in
`parse_file'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:162:in
`app'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:248:in
`wrapped_app'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:213:in
`start'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:100:in
`start'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/bin/rackup:4
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/bin/rackup:19:in `load'
/home/devel/.rvm/gems/jruby-1.5.3/bin/rackup:19
--8--

second caller execution:

--8--

/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
`new'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
`instantiate'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:170:in
`lookup'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/dispatch_pool.rb:76:in
`dispatch'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/dispatch_pool.rb:46:in
`handle'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:229:in
`process'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:166:in `step'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:73:in `run'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in
`run_in_thread'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in
`initialize'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in `new'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/worker.rb:85:in
`run_in_thread'
/home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/engine.rb:70:in
`initialize'
config.ru:46:in `new'
config.ru:46
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/builder.rb:46:in
`instance_eval'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/builder.rb:46:in
`initialize'
config.ru:1:in `new'
config.ru:1
:1:in `eval'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/builder.rb:35:in
`parse_file'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:162:in
`app'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:248:in
`wrapped_app'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:213:in
`start'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/lib/rack/server.rb:100:in
`start'
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/bin/rackup:4
/home/devel/.rvm/gems/jruby-1.5.3/gems/rack-1.2.1/bin/rackup:19:in `load'
/home/devel/.rvm/gems/jruby-1.5.3/bin/rackup:19

--8--


It seems that caller output is different between the two calls....
It's very weird.

Regards,
Gonzalo.

John Mettraux

unread,
Jan 17, 2011, 7:03:01 AM1/17/11
to openwfe...@googlegroups.com

On Mon, Jan 17, 2011 at 12:44:31PM +0100, Gonzalo Su�rez wrote:
>
> first caller execution:
>
> --8--
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
> `new'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
> `instantiate'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/fe_participant.rb:245:in
> `schedule_timeout'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/fe_participant.rb:154:in
> `apply'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/fe_ref.rb:117:in
> `apply'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/exp/flowexpression.rb:224:in
> --8--
>
> second caller execution:
>
> --8--
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
> `new'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:228:in
> `instantiate'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/participant_list.rb:170:in
> `lookup'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/dispatch_pool.rb:76:in
> `dispatch'
> /home/devel/tweaked-ruote-kit/ruote-kit/ruote/lib/ruote/svc/dispatch_pool.rb:46:in
> --8--
>
> It seems that caller output is different between the two calls....
> It's very weird.

Hello Gonzalo,

may I have a look at your participant implementation and how you register it ?

The first call is ruote inquiring if the participant responds to the #timeout method. It seems that your participant class has #timeout in its instance methods. So ruote is instantiating it and calling #timeout...

https://github.com/jmettraux/ruote/blob/1137fcd848aa7bee8234246518f2a396aaf9818a/lib/ruote/exp/fe_participant.rb#L234-254

The second call is the regular dispatch call.


Best regards,

Gonzalo Suárez

unread,
Jan 17, 2011, 7:36:03 AM1/17/11
to openwfe...@googlegroups.com
Hi John,

Here is the code I use to register a participant:

--8--

# participants registration list
#
RuoteKit.engine.participant_list = [
[ 'form', 'XmppStorageParticipant', { 'resource' => resource } ],
[ '^.+$', 'Ruote::StorageParticipant', {} ]
]

--8--

The initalization method is just:

def initialize(opts)
puts caller
@resource = opts['resource']
end

It's pretty much a regular storage_participant. Let me know if you
need some more info.

Thanks for the help.
Best regards,

Gonzalo.

John Mettraux

unread,
Jan 17, 2011, 7:52:39 AM1/17/11
to openwfe...@googlegroups.com

On Mon, Jan 17, 2011 at 01:36:03PM +0100, Gonzalo Su�rez wrote:
>
> Here is the code I use to register a participant:
>
> --8--
> # participants registration list
> #
> RuoteKit.engine.participant_list = [
> [ 'form', 'XmppStorageParticipant', { 'resource' => resource } ],
> [ '^.+$', 'Ruote::StorageParticipant', {} ]
> ]
> --8--
>
> The initalization method is just:
>
> def initialize(opts)
> puts caller
> @resource = opts['resource']
> end
>
> It's pretty much a regular storage_participant. Let me know if you
> need some more info.

Hello Gonzalo,

I'm trying to determine if your class does have the #timeout instance method.

Could you please tell me the output of

---8<---
p RUBY_DESCRIPTION
puts
[ XmppStorageParticipant, Ruote::StorageParticipant, NilClass ].each do |k|
p k
p k.instance_methods
puts
end
--->8---

in your rails console / environment ? Both Jruby and Ruby 1.8.7 would be appreciated.


Thanks in advance,

Gonzalo Suárez

unread,
Jan 17, 2011, 9:43:29 AM1/17/11
to openwfe...@googlegroups.com
Hi John,

Here is the info:

for jruby 1.5.3 (ruby 1.8.7 patchlevel 249) (2010-09-28 7ca06d7) (Java
HotSpot(TM) Client VM 1.6.0_21) [i386-java]:

"RUBY_DESCRIPTION"

XmppStorageParticipant
["pubsub_manager=", "consume", "pubsub_manager", "on_reply", "cancel",
"reply", "do_not_thread", "by_wfid", "purge!", "by_field",
"by_participant", "[]", "first", "all", "context=", "fetch", "query",
"context", "to_id", "size", "update", "fetch_all", "each",
"enum_cons", "reject", "sort", "group_by", "enum_with_index", "to_a",
"cycle", "to_set", "entries", "drop", "many?", "map", "take_while",
"each_with_index", "min", "include?", "sum", "each_slice", "inject",
"collect", "partition", "as_json", "enum_slice", "select", "none?",
"max_by", "any?", "zip", "take", "reduce", "find", "minmax_by",
"reverse_each", "drop_while", "each_cons", "member?", "max",
"sort_by", "detect", "all?", "minmax", "count", "grep",
"each_with_object", "find_all", "min_by", "index_by", "find_index",
"unschedule_re_dispatch", "re_dispatch", "fetch_flow_expression",
"launch", "put", "reply_to_engine", "sign", "get", "fexp", "receive",
"returning", "present?", "subclasses_of", "`", "to_yaml_style",
"to_inputstream", "extend_with_included_modules_from",
"include_class", "to_channel", "to_param", "java_kind_of?",
"remove_subclasses_of", "__jtrap", "with_options",
"copy_instance_variables_from", "to_yaml_properties", "timeout",
"taguri", "acts_like?", "try", "metaclass", "to_yaml", "blank?",
"duplicable?", "to_json", "handle_different_imports",
"instance_variable_names", "class_eval", "taguri=", "to_query",
"extended_by", "to_outputstream", "instance_values",
"load_with_new_constant_marking", "require_association",
"require_dependency", "unloadable", "require_or_load", "require",
"decode64", "encode64", "decode_b", "b64encode",
"pretty_print_inspect", "pretty_print_cycle", "pretty_print",
"pretty_print_instance_variables", "java_signature", "methods",
"breakpoint", "enable_warnings", "silence_stream", "freeze", "extend",
"==", "nil?", "object_id", "method", "tainted?", "is_a?",
"instance_variable_defined?", "instance_variable_get",
"pretty_inspect", "instance_variable_set", "hash", "silence_stderr",
"gem", "display", "send", "private_methods", "enum_for", "equal?",
"com", "to_java", "type", "instance_of?", "id", "taint", "class",
"java_annotation", "instance_variables", "to_s",
"require_library_or_gem", "org", "__send__", "=~",
"protected_methods", "inspect", "__id__", "java_implements", "tap",
"frozen?", "java", "respond_to?", "instance_eval", "===",
"java_package", "untaint", "clone", "java_name", "daemonize",
"to_enum", "singleton_methods", "eql?", "instance_exec",
"silence_warnings", "suppress", "dup", "kind_of?", "java_require",
"javax", "debugger", "public_methods"]

Ruote::StorageParticipant
["reply", "do_not_thread", "by_wfid", "purge!", "consume", "by_field",
"by_participant", "[]", "first", "all", "context=", "fetch", "query",
"context", "to_id", "size", "update", "fetch_all", "each", "cancel",
"enum_cons", "reject", "sort", "group_by", "enum_with_index", "to_a",
"cycle", "to_set", "entries", "drop", "many?", "map", "take_while",
"each_with_index", "min", "include?", "sum", "each_slice", "inject",
"collect", "partition", "as_json", "enum_slice", "select", "none?",
"max_by", "any?", "zip", "take", "reduce", "find", "minmax_by",
"reverse_each", "drop_while", "each_cons", "member?", "max",
"sort_by", "detect", "all?", "minmax", "count", "grep",
"each_with_object", "find_all", "min_by", "index_by", "find_index",
"unschedule_re_dispatch", "re_dispatch", "fetch_flow_expression",
"launch", "put", "reply_to_engine", "sign", "get", "fexp", "receive",
"returning", "present?", "subclasses_of", "`", "to_yaml_style",
"to_inputstream", "extend_with_included_modules_from",
"include_class", "to_channel", "to_param", "java_kind_of?",
"remove_subclasses_of", "__jtrap", "with_options",
"copy_instance_variables_from", "to_yaml_properties", "timeout",
"taguri", "acts_like?", "try", "metaclass", "to_yaml", "blank?",
"duplicable?", "to_json", "handle_different_imports",
"instance_variable_names", "class_eval", "taguri=", "to_query",
"extended_by", "to_outputstream", "instance_values",
"load_with_new_constant_marking", "require_association",
"require_dependency", "unloadable", "require_or_load", "require",
"decode64", "encode64", "decode_b", "b64encode",
"pretty_print_inspect", "pretty_print_cycle", "pretty_print",
"pretty_print_instance_variables", "java_signature", "methods",
"breakpoint", "enable_warnings", "silence_stream", "freeze", "extend",
"==", "nil?", "object_id", "method", "tainted?", "is_a?",
"instance_variable_defined?", "instance_variable_get",
"pretty_inspect", "instance_variable_set", "hash", "silence_stderr",
"gem", "display", "send", "private_methods", "enum_for", "equal?",
"com", "to_java", "type", "instance_of?", "id", "taint", "class",
"java_annotation", "instance_variables", "to_s",
"require_library_or_gem", "org", "__send__", "=~",
"protected_methods", "inspect", "__id__", "java_implements", "tap",
"frozen?", "java", "respond_to?", "instance_eval", "===",
"java_package", "untaint", "clone", "java_name", "daemonize",
"to_enum", "singleton_methods", "eql?", "instance_exec",
"silence_warnings", "suppress", "dup", "kind_of?", "java_require",
"javax", "debugger", "public_methods"]

NilClass
["|", "try", "to_f", "type", "to_yaml", "blank?", "to_a",
"pretty_print_cycle", "^", "&", "duplicable?", "to_s", "as_json",
"taguri=", "nil?", "inspect", "to_i", "taguri", "to_json",
"returning", "present?", "subclasses_of", "`", "to_yaml_style",
"to_inputstream", "extend_with_included_modules_from",
"include_class", "to_channel", "to_param", "java_kind_of?",
"remove_subclasses_of", "__jtrap", "with_options",
"copy_instance_variables_from", "to_yaml_properties", "timeout",
"acts_like?", "metaclass", "handle_different_imports",
"instance_variable_names", "class_eval", "to_query", "extended_by",
"to_outputstream", "instance_values",
"load_with_new_constant_marking", "require_association",
"require_dependency", "unloadable", "require_or_load", "require",
"decode64", "encode64", "decode_b", "b64encode",
"pretty_print_inspect", "pretty_print",
"pretty_print_instance_variables", "java_signature", "methods",
"breakpoint", "enable_warnings", "silence_stream", "freeze", "extend",
"==", "object_id", "method", "tainted?", "is_a?",
"instance_variable_defined?", "instance_variable_get",
"pretty_inspect", "instance_variable_set", "hash", "silence_stderr",
"gem", "display", "send", "private_methods", "enum_for", "equal?",
"com", "to_java", "instance_of?", "id", "taint", "class",
"java_annotation", "instance_variables", "require_library_or_gem",
"org", "__send__", "=~", "protected_methods", "__id__",
"java_implements", "tap", "frozen?", "java", "respond_to?",
"instance_eval", "===", "java_package", "untaint", "clone",
"java_name", "daemonize", "to_enum", "singleton_methods", "eql?",
"instance_exec", "silence_warnings", "suppress", "dup", "kind_of?",
"java_require", "javax", "debugger", "public_methods"]

for ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]

"RUBY_DESCRIPTION"

XmppStorageParticipant
["zip", "find_index", "minmax", "fetch", "silence_stream", "methods",
"send", "group_by", "pretty_inspect", "reply_to_engine",
"extended_by", "pretty_print", "require_association", "taint",
"to_enum", "instance_variable_defined?", "by_wfid", "take",
"find_all", "remove_subclasses_of", "debugger", "decode_b", "min_by",
"with_options", "entries", "singleton_methods", "instance_eval",
"first", "fetch_flow_expression", "extend_with_included_modules_from",
"enum_for", "nil?", "take_while", "pretty_print_inspect", "to_id",
"select", "breakpoint", "max_by", "many?", "do_not_thread",
"suppress", "protected_methods", "instance_exec", "metaclass", "sort",
"tainted?", "returning", "include?", "untaint", "each_slice",
"instance_of?", "load_with_new_constant_marking", "acts_like?",
"drop", "fetch_all", "equal?", "subclasses_of", "taguri", "reject",
"minmax_by", "sum", "consume", "hash", "private_methods", "all?",
"taguri=", "sort_by", "`", "daemonize", "kind_of?", "enum_slice",
"freeze", "to_json", "drop_while", "eql?", "to_set", "gem", "collect",
"to_yaml_style", "b64encode", "id", "re_dispatch", "cancel", "try",
"grep", "require_library_or_gem", "any?", "public_methods",
"unloadable", "update", "instance_values", "to_yaml", "is_a?",
"require", "silence_warnings", "as_json", "each_cons", "cycle",
"by_participant", "sign", "map", "member?", "tap", "type",
"each_with_index", "count", "one?", "instance_variables", "__id__",
"frozen?", "encode64", "purge!", "on_reply", "put",
"instance_variable_names", "query", "to_a", "enum_cons",
"respond_to?", "context", "display", "all", "each", "get", "inject",
"method", "class", "require_or_load", "enum_with_index", "to_param",
"context=", "none?", "instance_variable_get", "find", "==",
"__send__", "===", "min", "copy_instance_variables_from", "extend",
"to_s", "present?", "fexp", "enable_warnings", "each_with_object",
"size", "by_field", "reduce", "pubsub_manager", "receive",
"require_dependency", "clone", "pretty_print_cycle", "reverse_each",
"pretty_print_instance_variables", "to_query",
"unschedule_re_dispatch", "=~", "instance_variable_set",
"pubsub_manager=", "detect", "decode64", "to_yaml_properties", "max",
"blank?", "launch", "silence_stderr", "inspect", "[]", "index_by",
"reply", "class_eval", "partition", "dup", "duplicable?", "object_id"]

Ruote::StorageParticipant
["zip", "find_index", "minmax", "fetch", "silence_stream", "methods",
"send", "group_by", "pretty_inspect", "reply_to_engine",
"extended_by", "pretty_print", "require_association", "taint",
"to_enum", "instance_variable_defined?", "by_wfid", "take",
"find_all", "remove_subclasses_of", "debugger", "decode_b", "min_by",
"with_options", "entries", "singleton_methods", "instance_eval",
"first", "fetch_flow_expression", "extend_with_included_modules_from",
"enum_for", "nil?", "take_while", "pretty_print_inspect", "to_id",
"select", "breakpoint", "max_by", "many?", "do_not_thread",
"suppress", "protected_methods", "instance_exec", "metaclass", "sort",
"tainted?", "returning", "include?", "untaint", "each_slice",
"instance_of?", "load_with_new_constant_marking", "acts_like?",
"drop", "fetch_all", "equal?", "subclasses_of", "taguri", "reject",
"minmax_by", "sum", "consume", "hash", "private_methods", "all?",
"taguri=", "sort_by", "`", "daemonize", "kind_of?", "enum_slice",
"freeze", "to_json", "drop_while", "eql?", "to_set", "gem", "collect",
"to_yaml_style", "b64encode", "id", "re_dispatch", "cancel", "try",
"grep", "require_library_or_gem", "any?", "public_methods",
"unloadable", "update", "instance_values", "to_yaml", "is_a?",
"require", "silence_warnings", "as_json", "each_cons", "cycle",
"by_participant", "sign", "map", "member?", "tap", "type",
"each_with_index", "count", "one?", "instance_variables", "__id__",
"frozen?", "encode64", "purge!", "put", "instance_variable_names",
"query", "to_a", "enum_cons", "respond_to?", "context", "display",
"all", "each", "get", "inject", "method", "class", "require_or_load",
"enum_with_index", "to_param", "context=", "none?",
"instance_variable_get", "find", "==", "__send__", "===", "min",
"copy_instance_variables_from", "extend", "to_s", "present?", "fexp",
"enable_warnings", "each_with_object", "size", "by_field", "reduce",
"receive", "require_dependency", "clone", "pretty_print_cycle",
"reverse_each", "pretty_print_instance_variables", "to_query",
"unschedule_re_dispatch", "=~", "instance_variable_set", "detect",
"decode64", "to_yaml_properties", "max", "blank?", "launch",
"silence_stderr", "inspect", "[]", "index_by", "reply", "class_eval",
"partition", "dup", "duplicable?", "object_id"]

NilClass
["to_yaml_style", "to_json", "inspect", "require_or_load", "gem",
"enable_warnings", "tap", "&", "clone", "with_options", "returning",
"to_yaml_properties", "public_methods", "__send__", "object_id",
"extended_by", "decode_b", "load_with_new_constant_marking",
"instance_variable_defined?", "equal?", "freeze", "extend",
"duplicable?", "pretty_print_inspect", "send", "try",
"instance_variable_names", "as_json", "methods", "require_dependency",
"silence_stderr", "encode64", "hash", "to_param", "dup",
"pretty_inspect", "to_enum", "instance_variables",
"extend_with_included_modules_from", "require_library_or_gem", "|",
"eql?", "metaclass", "instance_eval", "id",
"copy_instance_variables_from", "debugger", "to_i",
"singleton_methods", "silence_stream", "to_query",
"remove_subclasses_of", "taint", "to_yaml", "instance_variable_get",
"frozen?", "enum_for", "display", "instance_of?", "^",
"pretty_print_instance_variables", "method", "to_a",
"silence_warnings", "`", "instance_exec", "type", "breakpoint",
"present?", "to_f", "protected_methods", "class_eval", "==",
"require_association", "decode64", "require", "===",
"instance_variable_set", "pretty_print", "respond_to?", "kind_of?",
"b64encode", "daemonize", "taguri", "to_s", "class",
"private_methods", "=~", "tainted?", "__id__", "taguri=",
"unloadable", "suppress", "subclasses_of", "untaint", "acts_like?",
"nil?", "blank?", "pretty_print_cycle", "is_a?", "instance_values"]


Hope it can help!

Regards,
Gonzalo.

John Mettraux

unread,
Jan 17, 2011, 7:45:30 PM1/17/11
to openwfe...@googlegroups.com

On Mon, Jan 17, 2011 at 03:43:29PM +0100, Gonzalo Su�rez wrote:
>
> for jruby 1.5.3 (ruby 1.8.7 patchlevel 249) (2010-09-28 7ca06d7) (Java
> HotSpot(TM) Client VM 1.6.0_21) [i386-java]:
>
> "RUBY_DESCRIPTION"
>
> XmppStorageParticipant
> "copy_instance_variables_from", "to_yaml_properties", "timeout",
> (...)

Hello Gonzalo,

I'm stupid, it was written here all along :

https://github.com/jmettraux/ruote/blob/1137fcd848aa7bee8234246518f2a396aaf9818a/lib/ruote/exp/fe_participant.rb#L245-250

I've decided to make things simpler. Instead of looking for a "timeout" method (which Jruby adds to all classes it seems), ruote we'll now be looking for a "rtimeout" one.

https://github.com/jmettraux/ruote/commit/5ceada891a5b4cbae761dfcd3e850be96cf71d11

I'll now write another email to this list to document this decision and the change.

Double call squashed.


Best regards,

Gonzalo

unread,
Jan 18, 2011, 4:20:41 AM1/18/11
to ruote
Hi John,

I applied your patch and it works nice with jruby :)

Thanks again for the quick reply and explanations on how to use the
timeout/rtimeout feature.

Best regards,
Gonzalo.

Reply all
Reply to author
Forward
0 new messages