<< Masa.20100928-resolve-missing-link-limitation-bug | 2010 | Masa.20100924-check-sl_entry >>
Setting test environment
src/util/updater.rb
def run
logfile_stats
=begin
if(update_swissmedic)
update_swissmedic_followers
end
update_swissmedicjournal
update_vaccines
=end
if(update_bsv)
# update_bsv_followers
end
=begin
update_narcotics
run_on_monthday(1) {
update_interactions
}
=end
end
def update
# path = download_to ARCHIVE_PATH
path = "/home/masa/ywesee/oddb.org/data/xml/XMLPublications-2010.09.27.zip"
=begin
if File.exist?(@latest) && FileUtils.cmp(@latest, path)
FileUtils.rm path
return
end
=end
_update path
# FileUtils.cp path, @latest
path
end
Preparing Preparation.xml for test
masa@masa ~/ywesee/oddb.org $ cd data/xml/ masa@masa ~/ywesee/oddb.org/data/xml $ ls XMLPublications-2010.09.27.zip masa@masa ~/ywesee/oddb.org/data/xml $ unzip XMLPublications-2010.09.27.zip Archive: XMLPublications-2010.09.27.zip inflating: PR100801.txt inflating: Publications.xls inflating: Generics.xml inflating: ItCodes.xml inflating: Preparations.xml masa@masa ~/ywesee/oddb.org/data/xml $ vim Preparation.xml (leave only 55972 and 56107 preparations) masa@masa ~/ywesee/oddb.org/data/xml $ cp Preparations.xml Preparations.xml.2.2 masa@masa ~/ywesee/oddb.org/data/xml $ vim Preparations.xml (delete limitations tag) masa@masa ~/ywesee/oddb.org/data/xml $ mv Preparations.xml Preparations.xml.2.2.del_lim masa@masa ~/ywesee/oddb.org/data/xml $ cp Preparations.xml.2.2 Preparations.xml masa@masa ~/ywesee/oddb.org/data/xml $ mv XMLPublications-2010.09.27.zip XMLPublications-2010.09.27.zip.bak masa@masa ~/ywesee/oddb.org/data/xml $ zip XMLPublications-2010.09.27.zip Preparations.xml adding: Preparations.xml (deflated 90%) masa@masa ~/ywesee/oddb.org/data/xml $ mv XMLPublications-2010.09.27.zip XMLPublications-2010.09.27.2.2.zip masa@masa ~/ywesee/oddb.org/data/xml $ cp Preparations.xml.2.2.del_lim Preparations.xml masa@masa ~/ywesee/oddb.org/data/xml $ zip XMLPublications-2010.09.27.zip Preparations.xml adding: Preparations.xml (deflated 90%) masa@masa ~/ywesee/oddb.org/data/xml $ mv XMLPublications-2010.09.27.zip XMLPublications-2010.09.27.2.2.del_lim.zip masa@masa ~/ywesee/oddb.org/data/xml $ cp XMLPublications-2010.09.27.2.2.zip XMLPublications-2010.09.27.zip
Attach:XMLPublication-2010.09.27.2.2.zip Attach:XMLPublication-2010.09.27.2.2.del_lim.zip
Run update_bsv
masa@masa ~/ywesee/oddb.org/ $ jobs/import_daily
Confirm a bug on browser
http://oddb.masa.org/en/gcc/search/zone/drugs/search_query/Isotretinoin/

Back up test data
masa@masa ~/ywesee/oddb.org $ pg_dump oddb.org > 2009.09.27.preparation.2.2.sql
Run update_bsv without limitations
masa@masa ~/ywesee/oddb.org/data/xml $ cp XMLPublications-2010.09.27.2.2.del_lim.zip XMLPublications-2010.09.27.zip masa@masa ~/ywesee/oddb.org $ cd ../.. masa@masa ~/ywesee/oddb.org $ jobs/import_daily
Confirm a bug on browser
http://oddb.masa.org/en/gcc/search/zone/drugs/search_query/Isotretinoin/

Check sl_entry objects
src/plugin/bsv_xml.rb
@sl_entries.each do |pac_ptr, sl_data|
pack = pac_ptr.resolve @app
@known_packages.delete pac_ptr
unless pack.nil?
pointer = pac_ptr + :sl_entry
if sl_data.empty?
if pack.sl_entry
@deleted_sl_entries += 1
@app.delete pointer
end
else
if pack.sl_entry
@updated_sl_entries += 1
else
@created_sl_entries += 1
end
if (lim_data = @lim_texts[pac_ptr]) && !lim_data.empty?
sl_data.store :limitation, true
end
print "pointer="
p pointer
print "========== sl_entries in ODBA cache ==========\n"
sl = pointer.resolve @app
pp sl
@app.update pointer.creator, sl_data, :bag
end
end
end
Run update_bsv
masa@masa ~/ywesee/oddb.org $ jobs/import_daily > log.dat
Result
pointer=#<ODDB::Persistence::Pointer:0x7f4f857d1938 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f4f857cd1f8
@bsv_dossier="17846",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Sun, 01 Jul 2007,
@limitation=nil,
@limitation_points=nil,
@limitation_text=nil,
@odba_id=1271980,
@odba_observers=[],
@odba_persistent=true,
@oid=1271980,
@pointer=
#<ODDB::Persistence::Pointer:0x7f4f857cc9d8
@directions=
[[:registration, "55972"],
[:sequence, "03"],
[:package, "019"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:40:23 +0200 2010,
@status="0",
@valid_from=Sun, 01 Jul 2007,
@valid_until=Fri, 31 Dec 9999>
pointer=#<ODDB::Persistence::Pointer:0x7f4f8579eb50 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "017"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f4f8579ab40
@bsv_dossier="17846",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Sun, 01 Jul 2007,
@limitation=nil,
@limitation_points=nil,
@limitation_text=nil,
@odba_id=1271979,
@odba_observers=[],
@odba_persistent=true,
@oid=1271979,
@pointer=
#<ODDB::Persistence::Pointer:0x7f4f8579a078
@directions=
[[:registration, "55972"],
[:sequence, "03"],
[:package, "017"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:40:23 +0200 2010,
@status="0",
@valid_from=Sun, 01 Jul 2007,
@valid_until=Fri, 31 Dec 9999>
pointer=#<ODDB::Persistence::Pointer:0x7f4f85670418 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f4f8566bc60
@bsv_dossier="17885",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Thu, 01 May 2003,
@limitation=nil,
@limitation_points=nil,
@odba_id=24334826,
@odba_observers=[],
@odba_persistent=true,
@oid=24334826,
@pointer=
#<ODDB::Persistence::Pointer:0x7f4f8566b4e0
@directions=
[[:registration, "56107"],
[:sequence, "01"],
[:package, "004"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:40:23 +0200 2010,
@status="0",
@valid_from=Thu, 01 May 2003,
@valid_until=Fri, 31 Dec 9999>
pointer=#<ODDB::Persistence::Pointer:0x7f4f85643918 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "002"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f4f8563fb10
@bsv_dossier="17885",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Thu, 01 May 2003,
@limitation=nil,
@limitation_points=nil,
@odba_id=24334827,
@odba_observers=[],
@odba_persistent=true,
@oid=24334827,
@pointer=
#<ODDB::Persistence::Pointer:0x7f4f8563f368
@directions=
[[:registration, "56107"],
[:sequence, "01"],
[:package, "002"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:40:23 +0200 2010,
@status="0",
@valid_from=Thu, 01 May 2003,
@valid_until=Fri, 31 Dec 9999>
Points
Confirm sl_entry object in ODBA cache with limitations
masa@masa ~/ywesee/oddb.org/data/xml $ cp XMLPublications-2010.09.27.2.2.zip XMLPublications-2010.09.27.zip masa@masa ~/ywesee/oddb.org $ jobs/import_daily > log.dat masa@masa ~/ywesee/oddb.org $ jobs/import_daily > log.dat
Result
pointer=#<ODDB::Persistence::Pointer:0x7f519387c080 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f5193878098
@bsv_dossier="17846",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Sun, 01 Jul 2007,
@limitation=true,
@limitation_points=nil,
@limitation_text=
#<ODDB::LimitationText:0x7f5193876450
@odba_class=nil,
@odba_container=nil,
@odba_id=25062229,
@receiver=nil,
@receiver_loaded=nil>,
@odba_id=1271980,
@odba_observers=[],
@odba_persistent=true,
@oid=1271980,
@pointer=
#<ODDB::Persistence::Pointer:0x7f5193876ef0
@directions=
[[:registration, "55972"],
[:sequence, "03"],
[:package, "019"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:51:21 +0200 2010,
@status="0",
@valid_from=Sun, 01 Jul 2007,
@valid_until=Fri, 31 Dec 9999>
pointer=#<ODDB::Persistence::Pointer:0x7f51938419a8 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "017"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f519383cb38
@bsv_dossier="17846",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Sun, 01 Jul 2007,
@limitation=true,
@limitation_points=nil,
@limitation_text=
#<ODDB::LimitationText:0x7f519383bd00
@odba_class=nil,
@odba_container=nil,
@odba_id=25062230,
@receiver=nil,
@receiver_loaded=nil>,
@odba_id=1271979,
@odba_observers=[],
@odba_persistent=true,
@oid=1271979,
@pointer=
#<ODDB::Persistence::Pointer:0x7f519383c340
@directions=
[[:registration, "55972"],
[:sequence, "03"],
[:package, "017"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:51:21 +0200 2010,
@status="0",
@valid_from=Sun, 01 Jul 2007,
@valid_until=Fri, 31 Dec 9999>
pointer=#<ODDB::Persistence::Pointer:0x7f51936f66c0 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f51936f2a20
@bsv_dossier="17885",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Thu, 01 May 2003,
@limitation=true,
@limitation_points=nil,
@odba_id=24334826,
@odba_observers=[],
@odba_persistent=true,
@oid=24334826,
@pointer=
#<ODDB::Persistence::Pointer:0x7f51936f2340
@directions=
[[:registration, "56107"],
[:sequence, "01"],
[:package, "004"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:51:21 +0200 2010,
@status="0",
@valid_from=Thu, 01 May 2003,
@valid_until=Fri, 31 Dec 9999>
pointer=#<ODDB::Persistence::Pointer:0x7f51936cb088 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "002"], [:sl_entry]]>
========== sl_entries in ODBA cache ==========
#<ODDB::SlEntry:0x7f51936c7410
@bsv_dossier="17885",
@data_origins=
{"status"=>:bag,
"introduction_date"=>:bag,
"valid_from"=>:bag,
"limitation_points"=>:bag,
"limitation"=>:bag,
"valid_until"=>:bag,
"bsv_dossier"=>:bag},
@introduction_date=Thu, 01 May 2003,
@limitation=true,
@limitation_points=nil,
@odba_id=24334827,
@odba_observers=[],
@odba_persistent=true,
@oid=24334827,
@pointer=
#<ODDB::Persistence::Pointer:0x7f51936c6bc8
@directions=
[[:registration, "56107"],
[:sequence, "01"],
[:package, "002"],
[:sl_entry]]>,
@revision=Mon Sep 27 08:51:21 +0200 2010,
@status="0",
@valid_from=Thu, 01 May 2003,
@valid_until=Fri, 31 Dec 9999>
Points
Namely
Question
Hypothesis
Experiment
src/model/slentry.rb
def create_limitation_text
p "getin SlEntry#create_limitation_text"
pp caller(0)
@limitation_text = LimitationText.new
end
Result
pointer=#<ODDB::Persistence::Pointer:0x7f47cb0b6f70 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry]]> pointer=#<ODDB::Persistence::Pointer:0x7f47cb09f1b8 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "017"], [:sl_entry]]> "getin SlEntry#create_limitation_text" ["/home/masa/ywesee/oddb.org/src/model/slentry.rb:20:in `create_limitation_text'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:229:in `send'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:229:in `issue_create'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:98:in `create'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:97:in `create'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:299:in `send'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:299:in `resolve'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:289:in `each'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:289:in `resolve'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:267:in `issue_update'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:118:in `update'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:117:in `update'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1393:in `update'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:434:in `tag_end'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `each'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `tag_end'", "/usr/lib64/ruby/1.8/rexml/parsers/streamparser.rb:26:in `parse'", "/usr/lib64/ruby/1.8/rexml/document.rb:201:in `parse_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:950:in `update_preparations'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:657:in `send'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:657:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:787:in `get_input_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:657:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1297:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1434:in `foreach'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1413:in `open'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1432:in `foreach'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:653:in `_update'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:648:in `update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:242:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `call'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `wrap_update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:241:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:210:in `run'", "jobs/import_daily:13", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `call'", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `run'", "jobs/import_daily:12"] "getin SlEntry#create_limitation_text" ["/home/masa/ywesee/oddb.org/src/model/slentry.rb:20:in `create_limitation_text'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:229:in `send'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:229:in `issue_create'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:98:in `create'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:97:in `create'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:299:in `send'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:299:in `resolve'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:289:in `each'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:289:in `resolve'", "/home/masa/ywesee/oddb.org/src/util/persistence.rb:267:in `issue_update'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:118:in `update'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:117:in `update'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1393:in `update'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:434:in `tag_end'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `each'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `tag_end'", "/usr/lib64/ruby/1.8/rexml/parsers/streamparser.rb:26:in `parse'", "/usr/lib64/ruby/1.8/rexml/document.rb:201:in `parse_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:950:in `update_preparations'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:657:in `send'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:657:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:787:in `get_input_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:657:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1297:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1434:in `foreach'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1413:in `open'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1432:in `foreach'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:653:in `_update'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:648:in `update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:242:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `call'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `wrap_update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:241:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:210:in `run'", "jobs/import_daily:13", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `call'", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `run'", "jobs/import_daily:12"] pointer=#<ODDB::Persistence::Pointer:0x7f47caf0e150 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry]]> pointer=#<ODDB::Persistence::Pointer:0x7f47caef8dc8 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "002"], [:sl_entry]]>
Notes
Bingo!!
Consideration
Trace the code
Consideration
Trace ODDB::Persistence::Pointer#resolve method
usr(util/persistence.rb
def resolve(hook, masa=nil)
p "\n___getin resolve___"
if masa
print '@directions='
p @directions
end
Persistence.find_by_pointer(to_s) or begin
lasthook = hook
laststep = []
@directions.each { |step|
print "step=", step, "\n" if masa
if(hook.nil?)
call = laststep.shift
args = laststep.join(',')
msg = "#{to_s} -> #{lasthook.class}::#{call}(#{args}) returned nil"
raise(UninitializedPathError.new(msg, self))
elsif(hook.respond_to?(step.first))
lasthook = hook
laststep = step
if masa
print "lasthook=", lasthook, "\n"
print "laststep=", laststep, "\n"
end
hook = begin
hook.send(*step)
rescue
end
def issue_create(app, masa=nil)
#new_obj = resolve(app)
new_obj = resolve(app, masa)
if masa
print "new_obj="
pp new_obj
end
unless new_obj.nil?
return new_obj
end
Result
====================
txt_ptr=#<ODDB::Persistence::Pointer:0x7f703af04d38 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry], [:limitation_text]]>
pointer=#<ODDB::Persistence::Pointer:0x7f703af04338 @directions=[[:create, #<ODDB::Persistence::Pointer:0x7f703af04d38 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry], [:limitation_text]]>]]>
___getin resolve___
@directions=[[:create, #<ODDB::Persistence::Pointer:0x7f703af04d38 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry], [:limitation_text]]>]]
step=create:!registration,55972!sequence,03!package,019!sl_entry!limitation_text.
lasthook=#<OddbPrevalence:0x7f7049ee5ac8>
laststep=create:!registration,55972!sequence,03!package,019!sl_entry!limitation_text.
pointer=#<ODDB::Persistence::Pointer:0x7f703af04d38 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry], [:limitation_text]]>
___getin resolve___
@directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry], [:limitation_text]]
step=registration55972
lasthook=#<OddbPrevalence:0x7f7049ee5ac8>
laststep=registration55972
step=sequence03
lasthook=#<ODDB::Registration:0x7f70430fe528>
laststep=sequence03
step=package019
lasthook=Isotretinoin-Mepha 40 mg, Solucaps
laststep=package019
step=sl_entry
lasthook=#<ODDB::Package:0x7f703ed38ac8>
laststep=sl_entry
step=limitation_text
lasthook=#<ODDB::SlEntry:0x7f703af343a8>
laststep=limitation_text
new_obj=nil
"getin SlEntry#create_limitation_text"
....
txt_ptr=#<ODDB::Persistence::Pointer:0x7f703ad631f0 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry], [:limitation_text]]>
pointer=#<ODDB::Persistence::Pointer:0x7f703ad62930 @directions=[[:create, #<ODDB::Persistence::Pointer:0x7f703ad631f0 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry], [:limitation_text]]>]]>
___getin resolve___
@directions=[[:create, #<ODDB::Persistence::Pointer:0x7f703ad631f0 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry], [:limitation_text]]>]]
step=create:!registration,56107!sequence,01!package,004!sl_entry!limitation_text.
lasthook=#<OddbPrevalence:0x7f7049ee5ac8>
laststep=create:!registration,56107!sequence,01!package,004!sl_entry!limitation_text.
pointer=#<ODDB::Persistence::Pointer:0x7f703ad631f0 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry], [:limitation_text]]>
___getin resolve___
@directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry], [:limitation_text]]
new_obj=#<ODDB::LimitationText:0x7f703ad58f98
@descriptions=
{"it"=>
#<ODDB::Text::Chapter:0x7f703ad58ca0
@heading="",
@sections=
[#<ODDB::Text::Section:0x7f703ad58b88
@paragraphs=
[#<ODDB::Text::Paragraph:0x7f703ad58ac0
@format=
#<ODDB::Text::Format:0x7f703ad589f8 @end=-1, @start=0, @values=[]>,
@formats=
[#<ODDB::Text::Format:0x7f703ad589f8
@end=-1,
@start=0,
@values=[]>],
@preformatted=false,
@raw_txt=nil,
@text="Forme gravi di acne, resistenti alla terapia.">],
@subheading="Isotretinoin Teva\n">]>,
....
Difference
55972
___getin resolve___ @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "017"], [:sl_entry], [:limitation_text]] step=registration55972
56107
___getin resolve___ @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry], [:limitation_text]] new_obj=#<ODDB::LimitationText:0x7f30dd651610
Consideration
But there is NOT find_by_pointer method defined in Persistence class!!
BraSt What to do next
Experiment
src/util/persistence.rb
def resolve(hook)
#Persistence.find_by_pointer(to_s) or begin
begin
Result

So
Experimentsrc/util/persistence.rb
def issue_delete(app)
p "getin issue_delete"
Result
sl pointer=#<ODDB::Persistence::Pointer:0x7f6df16fe7d8 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry]]> sl pointer=#<ODDB::Persistence::Pointer:0x7f6df16e5530 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "017"], [:sl_entry]]> "getin issue_delete" "getin issue_delete" sl pointer=#<ODDB::Persistence::Pointer:0x7f6df1581e28 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry]]> sl pointer=#<ODDB::Persistence::Pointer:0x7f6df156a890 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "002"], [:sl_entry]]>
Notes
BINGO!!
Experiment
src/util/persistence.rb
def issue_delete(app)
p "getin issue_delete"
pp caller(0)
Result
sl pointer=#<ODDB::Persistence::Pointer:0x7ff979955770 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "019"], [:sl_entry]]> sl pointer=#<ODDB::Persistence::Pointer:0x7ff97993b2a8 @directions=[[:registration, "55972"], [:sequence, "03"], [:package, "017"], [:sl_entry]]> "getin issue_delete" ["/home/masa/ywesee/oddb.org/src/util/persistence.rb:250:in `issue_delete'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:123:in `delete'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:119:in `delete'", "/home/masa/ywesee/oddb.org/src/command/delete.rb:10:in `execute'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:634:in `execute_command'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1360:in `delete'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:426:in `tag_end'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `each'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `tag_end'", "/usr/lib64/ruby/1.8/rexml/parsers/streamparser.rb:26:in `parse'", "/usr/lib64/ruby/1.8/rexml/document.rb:201:in `parse_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:956:in `update_preparations'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:663:in `send'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:663:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:787:in `get_input_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:663:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1297:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1434:in `foreach'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1413:in `open'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1432:in `foreach'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:659:in `_update'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:654:in `update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:242:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `call'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `wrap_update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:241:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:210:in `run'", "jobs/import_daily:13", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `call'", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `run'", "jobs/import_daily:12"] "getin issue_delete" ["/home/masa/ywesee/oddb.org/src/util/persistence.rb:250:in `issue_delete'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:123:in `delete'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `call'", "/home/masa/ywesee/oddb.org/src/util/failsafe.rb:9:in `failsafe'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:119:in `delete'", "/home/masa/ywesee/oddb.org/src/command/delete.rb:10:in `execute'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:634:in `execute_command'", "/home/masa/ywesee/oddb.org/src/util/oddbapp.rb:1360:in `delete'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:426:in `tag_end'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `each'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:419:in `tag_end'", "/usr/lib64/ruby/1.8/rexml/parsers/streamparser.rb:26:in `parse'", "/usr/lib64/ruby/1.8/rexml/document.rb:201:in `parse_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:956:in `update_preparations'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:663:in `send'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:663:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:787:in `get_input_stream'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:663:in `_update'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1154:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1297:in `each'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1434:in `foreach'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1413:in `open'", "/usr/lib64/ruby/gems/1.8/gems/rubyzip-0.9.4/lib/zip/zip.rb:1432:in `foreach'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:659:in `_update'", "/home/masa/ywesee/oddb.org/src/plugin/bsv_xml.rb:654:in `update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:242:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `call'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:425:in `wrap_update'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:241:in `update_bsv'", "/home/masa/ywesee/oddb.org/src/util/updater.rb:210:in `run'", "jobs/import_daily:13", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `call'", "/home/masa/ywesee/oddb.org/src/util/job.rb:17:in `run'", "jobs/import_daily:12"] sl pointer=#<ODDB::Persistence::Pointer:0x7ff9797c9988 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "004"], [:sl_entry]]> sl pointer=#<ODDB::Persistence::Pointer:0x7ff9797b32f0 @directions=[[:registration, "56107"], [:sequence, "01"], [:package, "002"], [:sl_entry]]>
Trace
if sl_entry.limitation_text
@deleted_limitation_texts += 1
@app.delete txt_ptr
end
Experiment src/plugin/bsv_xml.rb
if sl_entry.limitation_text || txt_ptr.resolve(@app)
@deleted_limitation_texts += 1
@app.delete txt_ptr
end
masa@masa ~/ywesee/oddb.org/data/xml $ cp XMLPublications-2010.09.27.2.2.del_lim.zip XMLPublications-2010.09.27.zip masa@masa ~/ywesee/oddb.org $ jobs/import_daily masa@masa ~/ywesee/oddb.org/data/xml $ cp XMLPublications-2010.09.27.2.2.zip XMLPublications-2010.09.27.zip masa@masa ~/ywesee/oddb.org $ jobs/import_daily
Result

Notes
Once this link is removed, everything works well
Solution
Question
Experiment
Deleting all the limitation text object in ODBA cache before updating
src/plugin/bsv_xml.rb
if sl_entry.limitation_text || txt_ptr.resolve(@app)
@app.delete txt_ptr
end
@app.update txt_ptr.creator, lim_data, :bag
Result
Conclution
It works!!