Started the modified swissmedic importer yesterday. Analysing its output. Looks like the output got stuck very early. Found in log/oddb/debug/2016/11.log
2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:127:in `verify_packages': verify_packages from /mnt/oddb-ci2/git/oddb.org/test/var/xls/Packungen-2016.11.29.xlsx 10 registrations and 6 @known_packages from ["00278", "01", "002"] till ["57678", "03", "024"] 2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:144:in `block (2 levels) in verify_packages': verify_packages delete 00278 01 001 2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:271:in `update': cp /mnt/oddb-ci2/git/oddb.org/test/var/xls/Packungen-2016.11.29.xlsx /mnt/oddb-ci2/git/oddb.org/test/var/xls/Packungen-latest.xlsx after 0 minutes 2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:313:in `update': done. 0 export_registrations @update_comps was with 9 changes 2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:314:in `update': done0. $swissmedic_do_tracing is true. Having 1 threads 2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:316:in `update': done1. $swissmedic_do_tracing is false. Having 1 threads 2016-11-29 17:29:58 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:318:in `update': done2. $swissmedic_do_tracing is false. Having 1 threads 2016-11-29 17:29:59 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:321:in `update': done3. $swissmedic_do_tracing is false. Having 1 threads 2016-11-29 17:29:59 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:323:in `update': done4. $swissmedic_do_tracing is false. Having 1 threads 2016-11-29 17:29:59 +0100: /mnt/oddb-ci2/git/oddb.org/src/plugin/swissmedic.rb:327:in `update': done5 ensure. $swissmedic_do_tracing is false. Having 1 threads
And in the stdout I see
59267/01: :!registration,59267!sequence,01!composition,22638432.: Must correct is 1 agents. Has 1 active_agents Deleting wrong_agent odba_isolated_store :!registration,59267!sequence,01!composition,22638432!active_agent,Influenza Virus Surface Antigen (haemagglutinin And Neuraminidase) (a/h1n1; A/h3n2; B)%: A/brisbane/59/2007. is 24364827 Influenza Virus Surface Antigen (Haemagglutinin and Neuraminidase) (A/h1N1; A/h3N2; B): A/brisbane/59/2007 15 µg/ml 59267/01: :!registration,59267!sequence,01!composition,22638432.: has now 0 active_agents 59267/02: :!registration,59267!sequence,02!composition,25001627.: Must correct is 6 agents. Has 6 active_agents Deleting wrong_agent odba_isolated_store :!registration,59267!sequence,02!composition,25001627!active_agent,Haemagglutininum Influenzae A (h1n1). is 25001630 Haemagglutininum Influenzae a (H1N1) Deleting wrong_agent odba_isolated_store :!registration,59267!sequence,02!composition,25001627!active_agent,Neuraminidasum Inactivatum (virus-stamm A/california/7/2009 (h1n1)-derived Strain%, Used Nymc X-181). is 26760485 Neuraminidasum Inactivatum (Virus-Stamm A/california/7/2009 (H1N1)-Derived Strain, used nymc X-181) 15 µg/ml message type 0x5a arrived from server while idle
Transforming the new puts-Statements into LogFile.debug and activating the trace_msg. There were 2088 active_agents deleted. And what means the line message type 0x5a arrived from server while idle
. Did the server die? Now my bin/admin statement $res= active_sequences.collect{|s| s.compositions.collect{|c| c.active_agents.find_all {|x| x.is_active_agent == nil} }}
hangs. Waiting 5 minutes to be sure that it is really stuck. Then I will restart the oddbd daemon. After another 3 minutes I got
ch.oddb> $res= active_sequences.collect{|s| s.compositions.collect{|c| c.active_agents.find_all {|x| x.is_active_agent == nil} }} -> $res.size Array ch.oddb> $res.size -> 11151
Import is running nicely and seems to produce correct result. See
While the report is running, asking myself why sometimes the Globulina Equina is recognized by the parse as active_agent and sometimes not. Eg. I find in oddb_calc.xml
<SUBSTANCE_NAME>Globulina Equina (immunisé Avec Tissu Ostéocartilagineux, Conjonctif, Séreuses, Ganglions Lymphatiques Porcins)</SUBSTANCE_NAME> <IS_ACTIVE_AGENT>false</IS_ACTIVE_AGENT> and <SUBSTANCE_NAME>Globulina Equina (immunisé Avec Muqueuse Sinusinale Porcins)</SUBSTANCE_NAME> <IS_ACTIVE_AGENT>true</IS_ACTIVE_AGENT>
The answer is that the recognition fails, if we have inside a bracket one or more occurrences of a comma. This is contradiction to the the result, where a comma delimits a new substance. I think I will just a special if /Globulina Equina/ matches to catch these 24 errors.
This was easy pushed the following commit to oddb2xml Added a hack for 24 globulina equina which commas between brackets
Travis-CI reminded me that I have a few errors. Eg.
Oddb2xml::MedregbmDownloader person download person txt should return valid String FIXED Expected pending 'Should handle SSL issues' to fail. No Error was raised.
This fix was particularly easy. Just remove the "Pending" line! But this provoked other errors as Medreg-Info for pharmacies and medical persons und is now distributed as XLSX and no longer as XLS/txt.
Porting the parslet changes to oddb.org with commit Added a hack for 24 compositions globulina equina with commas between brackets
My swissmedic job to update the composition is running since 3,25 h and has only update 3539 of 11151 active_sequences.
At 15:20 the import finished and sent me an email containing
ODDB::SwissmedicPlugin - Report 30.11.2016 Total time to update: 399.00 [m] Checked compositions: 11096 New compositions: 11096 Deleted compositions: 2 Updated agents: 9936 New agents: 60
Verified the following pages (after restarting all oddb-daemons):
As the patch for the Globulina Equina was not yet applied, I still have the wrong information there. Rerunning the import.
Pushed the commit Display corresponding chemical substances correctly.
Rerunning the import locally produced an error, as swissmedic update tried to update the field is_active_agent, which is no longer writeable.
When looking at the code and some items in the database I find cases, where inactive_agents are wrongly marked as is_active, e.g.
ch.oddb> registration('00277').sequence('01').compositions.first.inactive_agents.first.pointer -> :!registration,00277!sequence,01!composition,23826342!active_agent,Globulina Equina (immunisé Avec Coeur%, Endothélium Vasculaire Porcins). ch.oddb> registration('00277').sequence('01').compositions.first.inactive_agents.first.oid -> 30656124
Added some code to fix this problem now. Running the imported deletes (temporarily) a lot of inactive-agents, which still have the ActiveAgent class. But once this one time patch done. It will be possible to remove the is_active_agent attributes.
Reverted the patch on thinpower to wait for my local import to finish.
Received email with
ODDB::SwissmedicPlugin - Report 01.12.2016 Total time to update: 563.00 [m] Checked compositions: 11096 New compositions: 11096 Deleted compositions: 0 Updated agents: 9565 New agents: 5135
Looks good. Checked (after restarting oddbd)
Will start the update job on thinpower on the evening of Dec. 1. Pushed commit Do not update is_active_agent and Delete inactive_agent with wrong is_active_agent
Working on the problem, why after a login we don't display the correct page.
Testing manually, I was able to login and the page http://davaz.ngiger.ch/en/gallery/new_art_object/ looks very similar to davaz.com. But after entering some data and clicking "Save" the URL got redirected to http://davaz.ngiger.ch/en/gallery, but no new picture was displayed. Going back and clicking on Logout, did throw an exception
NoMethodError at /en/admin/logout/fragment/Rack_AFVfragment/Rack_AFV undefined method `movies' for "/en/works/design/#Rack_AFV":String Ruby /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb: in block in component, line 59 Web GET davaz.ngiger.ch/en/admin/logout/fragment/Rack_AFVfragment/Rack_AFV Traceback (innermost first) /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb: in block in component args = [model.send(key), session || @session, self]... /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb: in create self.send(component, model)... /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/divcomposite.rb: in block in compose div.push(label(create(component, model), component))... /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/divcomposite.rb: in each }.each { |matrix, component|... /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/divcomposite.rb: in compose }.each { |matrix, component|... /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb: in init compose()... /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/component.rb: in initialize init()... /home/niklaus/git/sbsm/lib/sbsm/state.rb: in new /home/niklaus/git/sbsm/lib/sbsm/state.rb: in new view = klass.new(model, @session)... /home/niklaus/git/sbsm/lib/sbsm/state.rb: in view view = klass.new(model, @session)... /home/niklaus/git/sbsm/lib/sbsm/state.rb: in to_html name = view... /home/niklaus/git/sbsm/lib/sbsm/session.rb: in to_html @state.to_html(cgi)... /home/niklaus/git/sbsm/lib/sbsm/session.rb: in block in drb_process to_html
After restarting the jobs, I made a login and after pressing logout I got another time an empty screen with the URL http://davaz.ngiger.ch/en/admin/logout/fragment/. After going back I had the followin exception
/var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb:157: warning: Hash#index is deprecated; use Hash#key NoMethodError: undefined method `movies' for "/en/gallery/gallery/":String /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb:59:in `block in component' /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb:145:in `create' /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/divcomposite.rb:33:in `block in compose' /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/divcomposite.rb:15:in `each' /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/divcomposite.rb:15:in `compose' /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/composite.rb:72:in `init' /var/www/davaz.com/vendor/ruby/2.3.0/gems/htmlgrid-1.1.3/lib/htmlgrid/component.rb:139:in `initialize' /home/niklaus/git/sbsm/lib/sbsm/state.rb:239:in `new' /home/niklaus/git/sbsm/lib/sbsm/state.rb:239:in `view' /home/niklaus/git/sbsm/lib/sbsm/state.rb:173:in `to_html' /home/niklaus/git/sbsm/lib/sbsm/session.rb:441:in `to_html' /home/niklaus/git/sbsm/lib/sbsm/session.rb:175:in `block in drb_process' /home/niklaus/git/sbsm/lib/sbsm/session.rb:173:in `synchronize' /home/niklaus/git/sbsm/lib/sbsm/session.rb:173:in `drb_process' /usr/local/lib/ruby/2.3.0/drb/drb.rb:1137:in `method_missing' /home/niklaus/git/sbsm/lib/sbsm/app.rb:106:in `call'
Added a test for login/logout. But must first figure out, why I cannot login when running the tests, whereas I am able to login in the real app.
Analysing error- and access_log for login/logou
# access_log 127.0.0.1 - - [30/Nov/2016:11:37:41 +0100] "GET /resources/javascript/widget/login.js HTTP/1.1" 200 1792 "http://davaz.ngiger.ch/en/gallery/gallery/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" 127.0.0.1 - - [30/Nov/2016:11:37:41 +0100] "GET /resources/javascript/widget/templates/login.html HTTP/1.1" 200 224 "http://davaz.ngiger.ch/en/gallery/gallery/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" 127.0.0.1 - - [30/Nov/2016:11:37:41 +0100] "GET /en/admin/login_form/ HTTP/1.1" 200 1096 "http://davaz.ngiger.ch/en/gallery/gallery/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" 127.0.0.1 - - [30/Nov/2016:11:37:45 +0100] "GET /en/admin?login_email=juerg%40davaz.com&login_password=&remember_me=1&flavor=&language=en&event=login&state_id=69943609856680&fragment= HTTP/1.1" 200 16 "http://davaz.ngiger.ch/en/ 127.0.0.1 - - [30/Nov/2016:11:37:45 +0100] "GET /en/gallery/gallery/ HTTP/1.1" 200 41826 "http://davaz.ngiger.ch/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" <..> 127.0.0.1 - - [30/Nov/2016:11:37:45 +0100] "GET /resources/css/gallery_admin.css HTTP/1.1" 200 1224 "http://davaz.ngiger.ch/en/gallery/gallery/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" 27.0.0.1 - - [30/Nov/2016:11:35:07 +0100] "GET /en/admin/logout/fragment/Rack_AFV HTTP/1.1" 200 - "http://davaz.ngiger.ch/en/works/design/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" 127.0.0.1 - - [30/Nov/2016:11:35:22 +0100] "GET /en/admin/logout/fragment/Rack_AFVfragment/Rack_AFV HTTP/1.1" 500 101682 "http://davaz.ngiger.ch/en/works/design/" "Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0" # error_log [Wed Nov 30 11:35:07 2016] [debug] mod_proxy_http.c(56): proxy: HTTP: canonicalising URL //localhost:8007/en/admin/logout/fragment/Rack_AFV [Wed Nov 30 11:35:07 2016] [debug] proxy_util.c(1535): [client 127.0.0.1] proxy: *: found reverse proxy worker for http://localhost:8007/en/admin/logout/fragment/Rack_AFV, referer: http://davaz.ngiger.ch/en/works/design/ [Wed Nov 30 11:35:07 2016] [debug] mod_proxy.c(1032): Running scheme http handler (attempt 0) [Wed Nov 30 11:35:07 2016] [debug] mod_proxy_http.c(1995): proxy: HTTP: serving URL http://localhost:8007/en/admin/logout/fragment/Rack_AFV
When running the test the cuki_str does not contain :remember= after the login. Why?