<< | Index | >>
Debug strange broken Sequence on production server.
Plugin: ODDB::SwissmedicPlugin Error: NoMethodError Message: undefined method `export_flag' for :@odba_observers:Symbol Backtrace: /var/www/oddb.org/src/plugin/swissmedic.rb:98:in `block (2 levels) in set_all_export_flag_false' /var/www/oddb.org/src/plugin/swissmedic.rb:97:in `each' /var/www/oddb.org/src/plugin/swissmedic.rb:97:in `block in set_all_export_flag_false'
src/plugin/swissmedic.rb
def set_all_export_flag_false @app.each_registration do |reg| # registration export_flag @known_export_registrations += 1 if reg.export_flag @app.update reg.pointer, {:export_flag => false}, :admin # sequence export_flag reg.sequences.values.each do |seq| @known_export_sequences += 1 if seq.export_flag @app.update seq.pointer, {:export_flag => false}, :admin end end end
ch.oddb> registrations.values.select{|reg| !reg.sequences.values.select{|seq| !seq.respond_to?(:export_flag)}.empty? }.length -> 1 ch.oddb> registrations.values.select{|reg| !reg.sequences.values.select{|seq| !seq.respond_to?(:export_flag)}.empty? }.first.sequences.values.first.class -> Symbol # delete ch.oddb> reg = registrations.values.select{|reg| !reg.sequences.values.select{|seq| seq.class != ODDB::Sequence}.empty? }.first; reg.sequences.delete(reg.sequences.first); reg.instance_variable_set('@sequences', {}); reg.odba_store; self.registrations.odba_store; reg.odba_id -> 27993 ch.oddb> ODBA.cache.fetch(27993) -> #<ODDB::Registration:0x00000009de54c8> ch.oddb> ODBA.cache.fetch(27993).sequences -> [] ch.oddb> ODBA.cache.fetch(27993).instance_variable_set('@sequences', {}) -> {} ch.oddb> ODBA.cache.fetch(27993).sequences.class -> Hash ch.oddb> ODBA.cache.fetch(27993).odba_isolated_store -> #<ODDB::Registration:0x00000009de54c8> ch.oddb> registrations.values.select{|reg| !reg.sequences.values.select{|seq| seq.class != ODDB::Sequence}.empty? }.length -> 0
ch.oddb> packages.length -> undefined method `packages' for :@odba_observers:Symbol ch.oddb> active_packages.length -> undefined method `active?' for []:Array ch.oddb> sequences.values.select{|seq| !seq.is_a? ODDB::Sequence }.length -> 1 # still broken (strange) ch.oddb> registrations.values.select{|reg| !reg.sequences.respond_to?(:values) }.first.sequences.class -> Hash ch.oddb> registrations.values.select{|reg| !reg.sequences.respond_to?(:values) }.first.sequences.keys -> undefined method `keys' for nil:NilClass ch.oddb> registrations.values.select{|reg| !reg.sequences.respond_to?(:values) }.first.sequences.values -> undefined method `values' for nil:NilClass # delete ch.oddb> ODBA.cache.fetch(27993).odba_delete -> #<ODDB::Registration:0x00000009c4d408> ch.oddb> registrations.values.select{|reg| !reg.sequences.values.select{|seq| seq.class != ODDB::Sequence}.empty? }.length -> 0
src/model/sequence.rb
def active? (!@inactive_date || (@inactive_date > @@two_years_ago)) \ && @registration && @registration.active? && !violates_patent? end
Does create Swissmedic Job this invaild Registration and Sequence ?
Debug these methods.
Plugin: ODDB::SwissmedicPlugin Error: NoMethodError Message: undefined method `data_origin' for []:Array Backtrace: /var/ch.oddb.org/.bundle/gems/ruby/1.9.1/gems/odba-1.0.8/lib/odba/stub.rb:112:in `method_missing' /var/ch.oddb.org/src/plugin/swissmedic.rb:460:in `block in rows_diff' /var/ch.oddb.org/src/plugin/swissmedic.rb:457:in `select' /var/ch.oddb.org/src/plugin/swissmedic.rb:457:in `rows_diff' /var/ch.oddb.org/.bundle/gems/ruby/1.9.1/gems/swissmedic_diff-0.1.3/lib/swissmedic-diff.rb:137:in `block in diff'
ch.oddb> packages.values.select{|pac| pac.registration.is_a?(Array) }.length -> undefined method `registration' for :@odba_persistent:Symbol ch.oddb> packages.values.select{|pac| !pac.is_a?(ODDB::Package) }.length -> 12 ch.oddb> packages.values.select{|pac| !pac.is_a?(ODDB::Package) }.first -> @odba_persistent ch.oddb> packages.values.select{|pac| !pac.is_a?(ODDB::Package) }.first.class -> Symbol
Strange Sequence has invalid Package.
ch.oddb> registrations.values.select{|reg| !reg.packages.select{|pac| !pac.is_a?(ODDB::Package) }.empty? }.first.packages.select{|pac| !pac.is_a?(ODDB::Package) }.length -> 12 ch.oddb> registrations.values.select{|reg| !reg.packages.select{|pac| !pac.is_a?(ODDB::Package) }.empty? }.first.sequences.values.select{|seq| !seq.packages.values.select{|pac| !pac.is_a?(ODDB::Package) }.empty? }.length -> 1
These invalid Sequence, Registration does not have Observer Methods.
Then I could not delete connections.
# delete ch.oddb> registrations.values.select{|reg| !reg.packages.select{|pac| !pac.is_a?(ODDB::Package) }.empty? }.first.sequences.values.select{|seq| !seq.packages.values.select{|pac| !pac.is_a?(ODDB::Package) }.empty? }.first.odba_delete ch.oddb> registrations.values.select{|reg| !reg.packages.select{|pac| !pac.is_a?(ODDB::Package) }.empty? } -> []
NoMethodError: undefined method `fachinfo' for nil:NilClass when updating index 'fachinfo_index_de' with a ODDB::AtcClass ["(eval):2:in `block (2 levels) in proc_instance_origin'", "(eval):2:in `collect'", "(eval):2:in `block in proc_instance_origin'", "/ch.oddb.org/.bundle/gems/ruby/1.9.1/gems/odba-1.0.8/lib/odba/index.rb:202:in `call'"] [...] NoMethodError: undefined method `fachinfo' for []:Array when updating index 'interactions_index_de' with a ODDB::Sequence ["(eval):2:in `block in proc_instance_origin'" ... NoMethodError: undefined method `fachinfo' for nil:NilClass when updating index 'unwanted_effects_index_de' with a ODDB::Sequence ["(eval):2:in `block in proc_instance_origin'" ...
Plugin: ODDB::TextInfoPlugin Error: ArgumentError Message: invalid byte sequence in US-ASCII Backtrace: /var/www/oddb.org/src/plugin/text_info.rb:899:in `extract_image' /var/www/oddb.org/src/plugin/text_info.rb:946:in `block in parse_end_update' /var/www/oddb.org/src/plugin/text_info.rb:920:in `each' /var/www/oddb.org/src/plugin/text_info.rb:920:in `parse_end_update' /var/www/oddb.org/src/plugin/text_info.rb:995:in `block (3 levels) in import_swissmedicinfo' ...
ERROR: index row size 6672 exceeds maximum 2712 for index "search_term_fachinfo_name_de" HINT: Values larger than 1/3 of a buffer page cannot be indexed. Consider a function index of an MD5 hash of the value, or use full text indexing. DBI::ProgrammingError: ERROR: index row size 6672 exceeds maximum 2712 for index "search_term_fachinfo_name_de" HINT: Values larger than 1/3 of a buffer page cannot be indexed. Consider a function index of an MD5 hash of the value, or use full text indexing. when updating index 'fachinfo_name_de' with a ODDB::Fachinfo
NoMethodError: undefined method `values' for nil:NilClass when updating index 'sequence_vaccine' with a ODDB::Registration ["(eval):2:in `block in proc_instance_target'",
INDEX table on PostgreSQL
oddb.org.ruby193=# \d fachinfo_name_de Table "public.fachinfo_name_de" Column | Type | Modifiers -------------+---------+----------- origin_id | integer | search_term | text | target_id | integer | Indexes: "origin_id_fachinfo_name_de" btree (origin_id) "search_term_fachinfo_name_de" btree (search_term) "target_id_fachinfo_name_de" btree (target_id)