hi I am trying to update the following method as the retry we have hard coded to ensure the sql transaction retires three times does not work. When we get a failure it rolls back but does not retry. Is there another I can add a retry or correct the following code Gurdipe def export_data( table_nickname, output_data_file, column_headers ) component,table_nickname = get_component(table_nickname) data_warehouse_class = component.class data_warehouse_instance = data_warehouse_class.instance # Get table name teradata_table_name = data_warehouse_instance.send(table_nickname).to_s start_time = Time.now() # Create column list, with various casting and reformatting column_list = [] column_headers.each do |column_header| format = "" if column_header.type == ''DA'' format = "(format ''YYYY/MM/DD'')" end column_def = "CAST( COALESCE( TRIM( #{column_header.name} #{format} ) , '''') as VARCHAR(#{column_header.max_length+10}) )" # Some data types need extra space so add 10 chars column_list.push(column_def) end * tries = 3 # try three times and then give up* begin # Create fastexport definition fed = <<END_FED .logtable DXWI_PROD_CRORDER_PLAY_PEN.promo_fexp_#{Time.now.strftime("%Y%m%d%H%M%S")}_log; .logon tdpm/#{DATA_WAREHOUSE_CONFIG[''username'']},#{DATA_WAREHOUSE_CONFIG[''password'']}; .begin export sessions 10; .export outfile #{output_data_file} format fastload mode record; /* FETCH DATA */ SELECT #{column_list.join(" ,\n")} FROM #{teradata_table_name} ; /* END */ .end export; /* LOGOFF */ .logoff; /* DONE */ END_FED # Write definition to a temporary file, because calling it from a ruby pipe can cause blocks # on tables with lots of columns (denorm_brag_report) fed_file = "#{GENERAL_SYSTEM_SETTINGS[''fastexport_temp_dir'']}/#{teradata_table_name.downcase}_data.fed" File.open(fed_file, ''w'') {|f| f.write(fed) } RAILS_DEFAULT_LOGGER.info("FLA_FILE_PATH: <#{output_data_file}>") RAILS_DEFAULT_LOGGER.info("TERADATA_TABLE: <#{teradata_table_name}>") RAILS_DEFAULT_LOGGER.info("Fastexport Definition File:\n #{fed_file}\n") RAILS_DEFAULT_LOGGER.info("Fastexport Definition:\n #{fed}\n") # Use fexp (fastexport) as system command RAILS_DEFAULT_LOGGER.info("Executing fastexport") output = nil open_return = IO.popen("fexp < #{fed_file}", "w+") do |pipe| pipe.close_write() output = pipe.read() end rescue * tries -= 1* sleep(1) # since we sometime get a time stamp problem, wait one second and then retry retry if tries > 0 raise # re-raise the exception if it hasn''t been retried end # Check results result = $? if result == 0 RAILS_DEFAULT_LOGGER.info("--") RAILS_DEFAULT_LOGGER.info("Finished Extracting data from Teradata (#{Time.now()-start_time} seconds)") RAILS_DEFAULT_LOGGER.info("--") else RAILS_DEFAULT_LOGGER.info("Failed Extracting data from Teradata (#{Time.now()-start_time} seconds) - Error code: #{result}") RAILS_DEFAULT_LOGGER.info("Output from FastExport:\n#{output}") raise("ERROR: Export of Table <#{teradata_table_name}> failed - Error Code #{result}.") end return end -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/G3xDSOMpEq0J. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en-US.