1 |
//============================================================================ |
//============================================================================ |
2 |
// $Id: PacketUser.cpp,v 1.10 2009/12/24 10:31:12 mocchiut Exp $ |
// $Id: PacketUser.cpp,v 1.16 2010/02/02 15:26:09 mocchiut Exp $ |
3 |
// Description : |
// Description : |
4 |
//============================================================================ |
//============================================================================ |
5 |
#include "PacketUser.h" |
#include "PacketUser.h" |
31 |
//marco_new_31: |
//marco_new_31: |
32 |
extern char* db_user; |
extern char* db_user; |
33 |
extern char* db_pwd; |
extern char* db_pwd; |
34 |
extern char* connection; |
extern char* pelosconnection; |
35 |
|
|
36 |
//per tenere conto reset obt |
//per tenere conto reset obt |
37 |
extern unsigned long int max_pkt_obt; |
extern unsigned long int max_pkt_obt; |
457 |
//if(!table){table=Table_GL_RESURS_OFFSET} |
//if(!table){table=Table_GL_RESURS_OFFSET} |
458 |
|
|
459 |
if (!single_connection) { |
if (!single_connection) { |
460 |
OpenDBConnection(table);//Nota qui ho deciso di lockare solo questa tabella e non tutte |
OpenDBConnection(NULL);// no, locak tutto Nota qui ho deciso di lockare solo questa tabella e non tutte |
461 |
} |
} |
462 |
|
|
463 |
UInt_t t0 = 0;//toffset |
UInt_t t0 = 0;//toffset |
541 |
//Finish the old root file |
//Finish the old root file |
542 |
void PacketUser::FinishGroup(char * filename) { |
void PacketUser::FinishGroup(char * filename) { |
543 |
if (pRun) { |
if (pRun) { |
544 |
if ( !( !real_time_init && !real_time_last && numPKTSaved <= recoverlimit ) && candelete ) pRun->WriteFiles(); |
if ( !( !real_time_init && !real_time_last && numPKTSaved <= recoverlimit ) || !candelete ) pRun->WriteFiles(); |
545 |
delete pRun; |
delete pRun; |
546 |
pRun = NULL; |
pRun = NULL; |
547 |
stringstream close; |
stringstream close; |
632 |
msg = err.str(); |
msg = err.str(); |
633 |
mainLogUtil->logInfo(msg); |
mainLogUtil->logInfo(msg); |
634 |
|
|
635 |
TString qu = Form("select ID_N from ROOT_TABLE_BAD order by INSERT_TIME desc limit 1;"); |
// TString qu = Form("select ID_N from ROOT_TABLE_BAD order by INSERT_TIME desc limit 1;"); // <========================= |
636 |
|
TString qu = Form("select ID_N from ROOT_TABLE_BAD where FILE_NAME='%s' and PKT_NUMBER_INIT=%i and INSERTED_BY='%s';",filename,pkt_number_init,tag_value); // <========================= |
637 |
TSQLResult *result = sqlServer->Query(qu.Data()); |
TSQLResult *result = sqlServer->Query(qu.Data()); |
638 |
TSQLRow *row = result->Next(); |
TSQLRow *row = result->Next(); |
639 |
Int_t eid = -1; |
Int_t eid = -1; |
648 |
} |
} |
649 |
|
|
650 |
CleanDisk(); |
CleanDisk(); |
651 |
if (!single_connection) { |
// if (!single_connection) { |
652 |
CloseDBConnection(); |
// CloseDBConnection(); |
653 |
} |
// } |
654 |
return; |
// return; // commented here... |
655 |
|
|
656 |
}; |
}; |
657 |
} |
} |
658 |
|
|
659 |
if ( real_time_init || real_time_last) { |
if ( real_time_init || real_time_last) { |
660 |
//saves info in DB in table Table_ROOT |
//saves info in DB in table Table_ROOT |
661 |
if (boot_number == 0) |
if (boot_number == 0) |
662 |
boot_number = boot_number_prevvalue; |
boot_number = boot_number_prevvalue; |
|
|
|
|
if (saveROOT_DB( |
|
|
Table_ROOT_Good, |
|
|
outDir, // here outDir is good, no expand EMI |
|
|
filename, pkt_number_init, pkt_number_last, obt_init, obt_last, obt_time_sync, last_time_sync_info, |
|
|
real_time_init, real_time_last, boot_number, timeOffset, bad_pkt, bad_pkt_EventReader, bad_pkt_CalibReader, |
|
|
numPKTSaved, fni, time_is_estimated) == true) { |
|
|
oss.str() = ""; |
|
|
oss << "Saved information regarding file: " << filename << " in table " << Table_ROOT_Good << " id= " << my_id; |
|
|
msg = oss.str(); |
|
|
mainLogUtil->logInfo(msg); |
|
663 |
|
|
664 |
if (tryMerge) { |
if (saveROOT_DB( |
665 |
merge_ROOTfiles(); |
Table_ROOT_Good, |
666 |
} |
outDir, // here outDir is good, no expand EMI |
667 |
} else { |
filename, pkt_number_init, pkt_number_last, obt_init, obt_last, obt_time_sync, last_time_sync_info, |
668 |
|
real_time_init, real_time_last, boot_number, timeOffset, bad_pkt, bad_pkt_EventReader, bad_pkt_CalibReader, |
669 |
|
numPKTSaved, fni, time_is_estimated) == true) { |
670 |
|
oss.str() = ""; |
671 |
|
oss << "Saved information regarding file: " << filename << " in table " << Table_ROOT_Good << " id= " << my_id; |
672 |
|
msg = oss.str(); |
673 |
|
mainLogUtil->logInfo(msg); |
674 |
|
|
675 |
|
if (tryMerge) { |
676 |
|
merge_ROOTfiles(); |
677 |
|
} |
678 |
|
} else { |
679 |
oss.str() = ""; |
oss.str() = ""; |
680 |
oss << "Problem storing information in DB regarding file: " << filename; |
oss << "Problem storing information in DB regarding file: " << filename; |
681 |
msg = oss.str(); |
msg = oss.str(); |
682 |
mainLogUtil->logError(msg); |
mainLogUtil->logError(msg); |
683 |
} |
} |
684 |
}; |
}; |
685 |
|
|
686 |
// if dbinfo is not empty than |
// if dbinfo is not empty than |
687 |
if ( obt_time_sync && last_time_sync_info && arsize > 0 ){ |
if ( arsize > 0 ){ |
|
|
|
688 |
|
|
689 |
// if(!m_dbinfos.empty()){ |
if ( !obt_time_sync || !last_time_sync_info ){ |
690 |
// while(!m_dbinfos.empty()){ |
TString *nomino=new TString(rootfilename); |
691 |
// dbinfo *app = m_dbinfos.back(); |
nomino->Remove(15); |
692 |
// m_dbinfos.pop_back(); |
TString qu = Form("select OBT_TIME_SYNC,LAST_TIME_SYNC_INFO from ROOT_TABLE where FILE_NAME like '%s_%%' and (abs(PKT_NUMBER_INIT-%lu)<50000 or abs(PKT_OBT_INIT-%lu)<3000000) limit 1;",nomino->Data(),pkt_number_init,obt_init); |
693 |
Int_t ez=0; |
// |
694 |
while ( ez < arsize ){ |
oss.str() = ""; |
695 |
Int_t eid = idtorecover->At(ez); |
oss << "(EM) Trying to find obt_time_sync and last_time_sync_info from DB, query is: " << qu.Data(); |
696 |
if ( eid > -1 ){ |
msg = oss.str(); |
697 |
|
mainLogUtil->logInfo(msg); |
698 |
|
// |
699 |
|
TSQLResult *result = sqlServer->Query(qu.Data()); |
700 |
|
TSQLRow *row = result->Next(); |
701 |
|
if ( row && result->GetRowCount() == 1 ){ |
702 |
|
obt_time_sync = (unsigned long int)atoll(row->GetField(0)); |
703 |
|
last_time_sync_info = (unsigned long int)atoll(row->GetField(1)); |
704 |
|
oss.str() = ""; |
705 |
|
oss << "(EM) found obt_time_sync and last_time_sync_info from DB! obt_time_sync = " <<obt_time_sync <<" last_time_sync_info = " << last_time_sync_info; |
706 |
|
msg = oss.str(); |
707 |
|
mainLogUtil->logInfo(msg); |
708 |
|
}; |
709 |
|
delete nomino; |
710 |
|
}; |
711 |
|
|
712 |
|
if ( obt_time_sync && last_time_sync_info ){ |
713 |
|
// if(!m_dbinfos.empty()){ |
714 |
|
// while(!m_dbinfos.empty()){ |
715 |
|
// dbinfo *app = m_dbinfos.back(); |
716 |
|
// m_dbinfos.pop_back(); |
717 |
|
Int_t ez=0; |
718 |
|
while ( ez < arsize ){ |
719 |
|
Int_t eid = idtorecover->At(ez); |
720 |
|
if ( eid > -1 ){ |
721 |
|
|
722 |
TString qu = Form("select FOLDER_NAME,FILE_NAME,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,BOOT_NUMBER,TIME_OFFSET,BAD_PKT,BAD_PKT_READ,BAD_PKT_CALREAD,NUM_PKT_SAVED,INPUT_NAME,TIME_IS_ESTIMATED from ROOT_TABLE_BAD where ID_N=%i;",eid); |
TString qu = Form("select FOLDER_NAME,FILE_NAME,PKT_NUMBER_INIT,PKT_NUMBER_FINAL,PKT_OBT_INIT,PKT_OBT_FINAL,BOOT_NUMBER,TIME_OFFSET,BAD_PKT,BAD_PKT_READ,BAD_PKT_CALREAD,NUM_PKT_SAVED,INPUT_NAME,TIME_IS_ESTIMATED from ROOT_TABLE_BAD where ID_N=%i;",eid); |
723 |
TSQLResult *result = sqlServer->Query(qu.Data()); |
TSQLResult *result = sqlServer->Query(qu.Data()); |
724 |
TSQLRow *row = result->Next(); |
TSQLRow *row = result->Next(); |
725 |
|
|
726 |
TString efolder_name=""; |
TString efolder_name=""; |
727 |
TString efile_name=""; |
TString efile_name=""; |
728 |
unsigned long int epkt_number_in=0ULL; |
unsigned long int epkt_number_in=0ULL; |
729 |
unsigned long int epkt_number_fin=0ULL; |
unsigned long int epkt_number_fin=0ULL; |
730 |
unsigned long int eobt_in=0ULL; |
unsigned long int eobt_in=0ULL; |
731 |
unsigned long int eobt_fin=0ULL; |
unsigned long int eobt_fin=0ULL; |
732 |
unsigned long int emboot_num=0ULL; |
unsigned long int emboot_num=0ULL; |
733 |
unsigned long int etime_offset=0ULL; |
unsigned long int etime_offset=0ULL; |
734 |
int ebad_pkt=0; |
int ebad_pkt=0; |
735 |
int ebad_pkt_read=0; |
int ebad_pkt_read=0; |
736 |
int ebad_pkt_CalRead=0; |
int ebad_pkt_CalRead=0; |
737 |
int enum_PKT_Saved=0; |
int enum_PKT_Saved=0; |
738 |
TString enome_input=""; |
TString enome_input=""; |
739 |
bool e_time_is_estimated=false; |
bool e_time_is_estimated=false; |
740 |
|
|
741 |
if ( row ){ |
if ( row ){ |
742 |
efolder_name = (TString)row->GetField(0); |
efolder_name = (TString)row->GetField(0); |
743 |
efile_name = (TString)row->GetField(1); |
efile_name = (TString)row->GetField(1); |
744 |
epkt_number_in = (unsigned long int)atoll(row->GetField(2)); |
epkt_number_in = (unsigned long int)atoll(row->GetField(2)); |
745 |
epkt_number_fin = (unsigned long int)atoll(row->GetField(3)); |
epkt_number_fin = (unsigned long int)atoll(row->GetField(3)); |
746 |
eobt_in = (unsigned long int)atoll(row->GetField(4)); |
eobt_in = (unsigned long int)atoll(row->GetField(4)); |
747 |
eobt_fin = (unsigned long int)atoll(row->GetField(5)); |
eobt_fin = (unsigned long int)atoll(row->GetField(5)); |
748 |
emboot_num = (unsigned long int)atoll(row->GetField(6)); |
emboot_num = (unsigned long int)atoll(row->GetField(6)); |
749 |
etime_offset = (unsigned long int)atoll(row->GetField(7)); |
etime_offset = (unsigned long int)atoll(row->GetField(7)); |
750 |
ebad_pkt = (int)atoi(row->GetField(8)); |
ebad_pkt = (int)atoi(row->GetField(8)); |
751 |
ebad_pkt_read = (int)atoi(row->GetField(9)); |
ebad_pkt_read = (int)atoi(row->GetField(9)); |
752 |
ebad_pkt_CalRead = (int)atoi(row->GetField(10)); |
ebad_pkt_CalRead = (int)atoi(row->GetField(10)); |
753 |
enum_PKT_Saved = (int)atoi(row->GetField(11)); |
enum_PKT_Saved = (int)atoi(row->GetField(11)); |
754 |
enome_input = (TString)row->GetField(12); |
enome_input = (TString)row->GetField(12); |
755 |
e_time_is_estimated = (bool)atoi(row->GetField(13)); |
e_time_is_estimated = (bool)atoi(row->GetField(13)); |
756 |
}; |
}; |
757 |
delete result; |
delete result; |
758 |
|
|
759 |
setReal_TimeRECOVERY( |
setReal_TimeRECOVERY( |
760 |
real_time_init, |
real_time_init, |
761 |
real_time_last, |
real_time_last, |
762 |
eobt_in, |
eobt_in, |
763 |
eobt_fin |
eobt_fin |
764 |
); |
); |
765 |
// |
// |
766 |
|
|
767 |
if (saveROOT_DB( |
if (saveROOT_DB( |
768 |
Table_ROOT_Good, |
Table_ROOT_Good, |
769 |
efolder_name.Data(), |
efolder_name.Data(), |
770 |
efile_name.Data(), |
efile_name.Data(), |
771 |
epkt_number_in, |
epkt_number_in, |
772 |
epkt_number_fin, eobt_in, eobt_fin, obt_time_sync, last_time_sync_info, |
epkt_number_fin, eobt_in, eobt_fin, obt_time_sync, last_time_sync_info, |
773 |
real_time_init, real_time_last, emboot_num, etime_offset, ebad_pkt, ebad_pkt_read, ebad_pkt_CalRead, |
real_time_init, real_time_last, emboot_num, etime_offset, ebad_pkt, ebad_pkt_read, ebad_pkt_CalRead, |
774 |
enum_PKT_Saved, enome_input.Data(), e_time_is_estimated) == true) { |
enum_PKT_Saved, enome_input.Data(), e_time_is_estimated) == true) { |
775 |
oss.str() = ""; |
oss.str() = ""; |
776 |
oss << "\nTAG(tassa): RECOVERED!!!! Saved information regarding file: " << efile_name << " in table " << Table_ROOT_Good << " id= " << my_id; |
oss << "\nTAG(tassa): RECOVERED!!!! Saved information regarding file: " << efile_name << " in table " << Table_ROOT_Good << " id= " << my_id; |
777 |
msg = oss.str(); |
msg = oss.str(); |
778 |
mainLogUtil->logInfo(msg); |
mainLogUtil->logInfo(msg); |
779 |
/*merging we use global variable. we haveto set with current value*/ |
/*merging we use global variable. we haveto set with current value*/ |
780 |
|
|
781 |
strcpy(outDir,efolder_name.Data() ); |
strcpy(outDir,efolder_name.Data() ); |
782 |
// outDir=efolder_name.Data(); |
// outDir=efolder_name.Data(); |
783 |
strcpy(filename,efile_name.Data() ); |
strcpy(filename,efile_name.Data() ); |
784 |
// filename=efile_name.Data(); |
// filename=efile_name.Data(); |
785 |
pkt_number_init=epkt_number_in; |
pkt_number_init=epkt_number_in; |
786 |
pkt_number_last=epkt_number_fin; |
pkt_number_last=epkt_number_fin; |
787 |
obt_init=eobt_in; |
obt_init=eobt_in; |
788 |
obt_last=eobt_fin; |
obt_last=eobt_fin; |
789 |
boot_number=emboot_num; |
boot_number=emboot_num; |
790 |
timeOffset=etime_offset; |
timeOffset=etime_offset; |
791 |
bad_pkt=ebad_pkt; |
bad_pkt=ebad_pkt; |
792 |
bad_pkt_EventReader=ebad_pkt_read; |
bad_pkt_EventReader=ebad_pkt_read; |
793 |
bad_pkt_CalibReader=ebad_pkt_CalRead; |
bad_pkt_CalibReader=ebad_pkt_CalRead; |
794 |
numPKTSaved=enum_PKT_Saved; |
numPKTSaved=enum_PKT_Saved; |
795 |
strcpy(fni,enome_input.Data() ); |
strcpy(fni,enome_input.Data() ); |
796 |
// fni=enome_input.Data(); |
// fni=enome_input.Data(); |
797 |
time_is_estimated=e_time_is_estimated; |
time_is_estimated=e_time_is_estimated; |
798 |
|
|
799 |
if (tryMerge) { |
if (tryMerge) { |
800 |
merge_ROOTfiles(); |
merge_ROOTfiles(); |
801 |
} |
} |
802 |
|
|
803 |
TString qu2 = Form("update ROOT_TABLE_BAD set ON_DISK='MVD' where ID_N=%i;",eid); |
TString qu2 = Form("update ROOT_TABLE_BAD set ON_DISK='MVD' where ID_N=%i;",eid); |
804 |
sqlServer->Query(qu2.Data()); |
sqlServer->Query(qu2.Data()); |
805 |
|
|
806 |
|
|
807 |
} |
} |
808 |
else { |
else { |
809 |
oss.str() = ""; |
oss.str() = ""; |
810 |
oss << "Problem storing information in DB regarding file: " << filename; |
oss << "Problem storing information in DB regarding file: " << filename; |
811 |
msg = oss.str(); |
msg = oss.str(); |
812 |
mainLogUtil->logError(msg); |
mainLogUtil->logError(msg); |
813 |
} |
} |
814 |
|
|
815 |
|
|
816 |
}; |
}; |
817 |
ez++; |
ez++; |
818 |
} |
} |
819 |
// |
// |
820 |
idtorecover->Reset(); |
idtorecover->Reset(); |
821 |
delete idtorecover; |
delete idtorecover; |
822 |
idtorecover = new TArrayI(100); |
idtorecover = new TArrayI(100); |
823 |
arsize = 0; |
arsize = 0; |
824 |
// delete app; |
// delete app; |
825 |
} |
}; |
826 |
|
}; |
827 |
|
|
828 |
CleanDisk(); |
CleanDisk(); |
829 |
if (!single_connection) { |
if (!single_connection) { |
832 |
|
|
833 |
}//pRun |
}//pRun |
834 |
} |
} |
835 |
|
|
836 |
|
|
837 |
void PacketUser::CleanDisk(){ |
void PacketUser::CleanDisk(){ |
838 |
if ( !candelete ) return; |
if ( !candelete ) return; |
1388 |
TSQLResult* res = NULL; |
TSQLResult* res = NULL; |
1389 |
stringstream oss; |
stringstream oss; |
1390 |
oss.str(""); |
oss.str(""); |
1391 |
if (!tableTobeLocked) |
// if (!tableTobeLocked) |
1392 |
oss << "lock table " << Table_ROOT_Good << " write, " << Table_ROOT_Bad << " write, " << Table_GL_RESURS_OFFSET |
oss << "lock table " << Table_ROOT_Good << " write, " << Table_ROOT_Bad << " write, " << Table_GL_RESURS_OFFSET |
1393 |
<< " write, " << Table_ROOT_Merging << " write;"; |
<< " write, " << Table_ROOT_Merging << " write;"; |
1394 |
else |
// else |
1395 |
oss << "lock table " << tableTobeLocked << " write; "; |
// oss << "lock table " << tableTobeLocked << " write; "; |
1396 |
|
|
1397 |
string msg = oss.str(); |
string msg = oss.str(); |
1398 |
mainLogUtil->logAll(msg); |
mainLogUtil->logAll(msg); |
1462 |
if (do_cont_check) { |
if (do_cont_check) { |
1463 |
//controllo che non sia gia' aperta |
//controllo che non sia gia' aperta |
1464 |
if (!sqlServer) { |
if (!sqlServer) { |
1465 |
sqlServer = TSQLServer::Connect(connection, db_user, db_pwd); |
sqlServer = TSQLServer::Connect(pelosconnection, db_user, db_pwd); |
1466 |
if ((!sqlServer) || (!(sqlServer->IsConnected()))) { |
if ((!sqlServer) || (!(sqlServer->IsConnected()))) { |
1467 |
cout << "Can not connect with MYSQL sever" << endl; |
cout << "Can not connect with MYSQL sever" << endl; |
1468 |
} |
} |