-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deploy jruby-rack-worker on WebLogic #22
Comments
Hi @kares facing a weird issue with Weblogic + JNDI + jruby-rack-worker, even though the jndi config is present in warble.rb, get the error
Generated web xml in the warfile is like below
If I don't use JNDI, work fine. Am I missing someting? |
Got into this too with Weblogic 12C, JNDI Datasource in web.xml, tried with JRuby 9.0.5.0, 9.1.5.0, 9.1.7.0, JDK 1.8.66 ####<Oct 11, 2017, 2:54:13,282 PM UTC> <Info> <ServletContext-/rails_app>
<wls12c-r2-1.private> <managed_1> <jruby-rack-worker#1>
<<anonymous>> <> <c9906ea0-1ee7-4e49-92c9-b6f4e36e12c2-00000007><1507733653282>
<[severity-value: 64] [rid: 0:16] [partition-id: 0] [partition-name: DOMAIN] >
<BEA-000000> <E, [2017-10-11T14:54:13.282000 #19158] ERROR -- : undefined method `[]' for nil:NilClass (NoMethodError):
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/backend/base.rb:63:in `name'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:273:in `job_say'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:304:in `handle_failed_job'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:241:in `block in run'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:61:in `block in initialize'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:66:in `execute'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:241:in `run'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:312:in `block in reserve_and_run_one_job'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:61:in `block in initialize'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:66:in `execute'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:312:in `reserve_and_run_one_job'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:213:in `block in work_off'
org/jruby/RubyFixnum.java:299:in `times'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:212:in `work_off'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:175:in `block in start'
uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/benchmark.rb:308:in `realtime'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:174:in `block in start'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:61:in `block in initialize'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:66:in `execute'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:173:in `block in start'
org/jruby/RubyKernel.java:1296:in `loop'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:172:in `block in start'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/plugins/clear_locks.rb:7:in `block in ClearLocks'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:79:in `block in add'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:61:in `block in initialize'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:79:in `block in add'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:66:in `execute'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/delayed_job-4.1.3/lib/delayed/worker.rb:171:in `start'
uri:classloader:/delayed/start_worker.rb:19:in `<main>'
org/jruby/RubyKernel.java:974:in `load'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/activesupport-4.2.7/lib/active_support/dependencies.rb:268:in `block in load'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/activesupport-4.2.7/lib/active_support/dependencies.rb:240:in `load_dependency'
/oracle/fmw12.2.1/config/Domains/production-base/servers/managed_1/tmp/_WL_user/rails_app/53cvdz/war/WEB-INF/gems/gems/activesupport-4.2.7/lib/active_support/dependencies.rb:268:in `load' |
sounds/seems quite weird - would be great to get it sorted out esp. since there are multiple complainers. could help out from there - but otherwise not planning to look into setting up a WL deployment scenario pro-actively, atm. |
Hi @kares appreciate your help! Please check the debugging info for a single job below, and let me know if this helps! Debug code https://github.com/collectiveidea/delayed_job/blob/v4.1.3/lib/delayed/backend/base.rb#L63 def name
p "############ debug name #####################"
p payload_object.inspect
p "Respond to :display_name: #{payload_object.respond_to?(:display_name)}"
@name ||= payload_object.respond_to?(:display_name) ? payload_object.display_name : payload_object.class.name
rescue DeserializationError
p "############ debug name rescue #####################"
p handler.inspect
ParseObjectFromYaml.match(handler)[1]
end
def payload_object=(object)
@payload_object = object
self.handler = object.to_yaml
end
def payload_object
p "############ debug payload_object #####################"
p "handler: #{handler.inspect}"
@payload_object ||= YAML.load_dj(handler)
rescue TypeError, LoadError, NameError, ArgumentError, SyntaxError, Psych::SyntaxError => e
raise DeserializationError, "Job failed to load: #{e.message}. Handler: #{handler.inspect}"
end Without JNDI
With JNDI
|
ah I see - not much there - a missed the part that its already in error handling code, so there's likely class Delayed::Worker.class_eval do
alias_method :__handle_failed_job, :handle_failed_job
def handle_failed_job(job, error)
puts "ERR: job #{job.inspect rescue nil} failed #{error.inspect}\n #{error.backtrace.join("\n ")}"
__handle_failed_job(job, error) # PLS double check this is right - obviously did not try it out :)
end
end |
Here goes the info: ERR: job #<Delayed::Backend::ActiveRecord::Job id: 4931, priority: 0, attempts: 0, handler: nil, last_error: nil, run_at: "2017-10-13 09:56:48", locked_at: "2017-10-13 09:56:49", failed_at: nil, locked_by: "host:qi53-Latitude-3550 pid:5242 thread:jruby-rack...", queue: nil, created_at: "2017-10-13 09:56:48", updated_at: "2017-10-13 09:56:48"> failed #<NoMethodError: undefined method |
formatting 🥇 |
@kares I managed to let this work in tomcat, the same war file in weblogic still throws the error though. |
@kares finally found the issue. In JNDI + Weblogic + Oracle, AR object attributes having column type
To solve this, change the This is not only with the
I feel this is not a jruby-rack-worker issue. Thanks for your help! |
@skarmakar thanks but this seems to make little sense, do you have any backtrace details around? also, could anyone share how the 'normal' database.yml setup looked and then for comparison the for it to make sense you guys must have been using |
I'm using oracle_enhanced adapter. default: &default
adapter: oracle_enhanced
database: <%= ENV['ORACLE_DATABASE'] %> # xe
host: <%= ENV['ORACLE_DBHOST'] %> # 0.0.0.0
username: <%= ENV['ORACLE_USERNAME'] %> # system
password: <%= ENV['ORACLE_PASSWORD'] %> # oracle
port: <%= ENV['ORACLE_PORT'] %> # 1521
development:
<<: *default
test:
<<: *default
migration:
<<: *default
staging:
adapter: oracle_enhanced
jndi: jdbc/staging-ds
production:
adapter: oracle_enhanced
jndi: jdbc/production-ds
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<%- webxml.context_params.each do |name, value| -%>
<context-param>
<param-name><%= name %></param-name>
<param-value><%= value %></param-value>
</context-param>
<%- end -%>
<filter>
<filter-name>RackFilter</filter-name>
<filter-class>org.jruby.rack.RackFilter</filter-class>
<async-supported>false</async-supported>
</filter>
<filter-mapping>
<filter-name>RackFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
</listener>
<listener>
<listener-class>org.kares.jruby.rack.WorkerContextListener</listener-class>
</listener>
</web-app>
Warbler::Config.new do |config|
config.gem_excludes = [/^(test|spec)\//]
config.jar_name = "mega"
config.jar_extension = "war"
config.webinf_files += FileList["config/weblogic.xml"]
config.public_html = FileList["public/**/*", "doc/**/*"]
config.webxml.rails.env = ENV['RAILS_ENV'] || 'production'
config.webxml.jruby.min.runtimes = 1
config.webxml.jruby.max.runtimes = 1
config.webxml.jruby.worker = 'delayed_job'
config.webxml.QUEUES = 'one,two,three'
config.webxml.INTERVAL = 2.5
end |
@mskutin your configuration seems right ... I'm out of ideas ATM esp. if its Oracle :) @skarmakar already posted a 'work-around' so I'm assuming its not really an issue with jruby-rack-worker pls note that DJ likes to keep connections around so JNDI without some "enhancements" makes no sense ;( |
Hi guys, I finally found the issue, and here goes the details and probable solution. FYI rsim/oracle-enhanced#1549 |
Hi,
I have a Jruby project that has background processes that need to be run every x minutes. I am using Jruby-rack- worker + delayed_cron_job library. I have followed the instructions of jruby-rack-worker as follow:
After the deployment of the WAR file on weblogic, I have checked the log file and I can see that after the completion of deployment, It is trying to start the Worker but nothing happening :
What is missing here and how can I know if the JobWorker started successfully or why it didn't start ?
I appreciate your reply,
The text was updated successfully, but these errors were encountered: