Skip to content

Commit 7d19af0

Browse files
committedFeb 2, 2014
Merge remote branch 'origin/CMSSW_7_0_X' into CMSSW_7_0_X
2 parents f570eb3 + a78d435 commit 7d19af0

File tree

13 files changed

+117
-51
lines changed

13 files changed

+117
-51
lines changed
 

‎CondCore/CondDB/interface/ConnectionPool.h

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ namespace cond {
5151
bool m_loggingEnabled = false;
5252
// this one has to be moved!
5353
cond::CoralServiceManager* m_pluginManager = 0;
54+
std::vector<std::string> m_refreshtablelist;
5455
};
5556
}
5657
}

‎CondCore/CondDB/interface/PayloadProxy.h

+6-7
Original file line numberDiff line numberDiff line change
@@ -100,20 +100,19 @@ namespace cond {
100100

101101
virtual void invalidateCache() {
102102
m_data.reset();
103+
m_currentPayloadId.clear();
103104
m_currentIov.clear();
104105
m_requests.clear();
105106
}
106107

107108
protected:
108109
virtual void loadPayload() {
109-
if( m_currentPayloadId != m_currentIov.payloadId ){
110-
if( m_currentIov.payloadId.empty() ){
111-
throwException( "Can't load payload: no valid IOV found.","PayloadProxy::loadPayload" );
112-
}
113-
m_data = m_session.fetchPayload<DataT>( m_currentIov.payloadId );
114-
m_currentPayloadId = m_currentIov.payloadId;
115-
m_requests.push_back( m_currentIov );
110+
if( m_currentIov.payloadId.empty() ){
111+
throwException( "Can't load payload: no valid IOV found.","PayloadProxy::loadPayload" );
116112
}
113+
m_data = m_session.fetchPayload<DataT>( m_currentIov.payloadId );
114+
m_currentPayloadId = m_currentIov.payloadId;
115+
m_requests.push_back( m_currentIov );
117116
}
118117

119118
private:

‎CondCore/CondDB/src/ConnectionPool.cc

+18-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "FWCore/ParameterSet/interface/ParameterSet.h"
88
// coral includes
99
#include "RelationalAccess/ConnectionService.h"
10+
#include "RelationalAccess/IWebCacheControl.h"
1011
#include "RelationalAccess/ISessionProxy.h"
1112
#include "RelationalAccess/IConnectionServiceConfiguration.h"
1213
#include "CoralKernel/Context.h"
@@ -24,7 +25,18 @@ namespace cond {
2425
m_authSys(0),
2526
m_messageLevel( coral::Error ),
2627
m_loggingEnabled( false ),
27-
m_pluginManager( new cond::CoralServiceManager ){
28+
m_pluginManager( new cond::CoralServiceManager ),
29+
m_refreshtablelist(){
30+
m_refreshtablelist.reserve(6);
31+
//table names for IOVSequence in the old POOL mapping
32+
m_refreshtablelist.push_back("IOV");
33+
m_refreshtablelist.push_back("IOV_DATA");
34+
//table names for IOVSequence in ORA
35+
m_refreshtablelist.push_back("ORA_C_COND_IOVSEQUENCE");
36+
m_refreshtablelist.push_back("ORA_C_COND_IOVSEQU_A0");
37+
m_refreshtablelist.push_back("ORA_C_COND_IOVSEQU_A1");
38+
//table names for IOVSequence in CONDDB
39+
m_refreshtablelist.push_back("TAG");
2840
configure();
2941
}
3042

@@ -129,7 +141,11 @@ namespace cond {
129141

130142
Session ConnectionPool::createSession( const std::string& connectionString, const std::string& transactionId, bool writeCapable ){
131143
coral::ConnectionService connServ;
132-
boost::shared_ptr<coral::ISessionProxy> coralSession( connServ.connect( getRealConnectionString( connectionString, transactionId ),
144+
std::pair<std::string,std::string> fullConnectionPars = getRealConnectionString( connectionString, transactionId );
145+
if( !fullConnectionPars.second.empty() )
146+
for( auto tableName : m_refreshtablelist ) connServ.webCacheControl().refreshTable( fullConnectionPars.second, tableName );
147+
148+
boost::shared_ptr<coral::ISessionProxy> coralSession( connServ.connect( fullConnectionPars.first,
133149
writeCapable?coral::Update:coral::ReadOnly ) );
134150
return Session( coralSession, connectionString );
135151
}

‎CondCore/CondDB/src/DbConnectionString.cc

+6-6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ namespace cond {
2424
return count;
2525
}
2626

27-
std::string makeFrontierConnectionString( const std::string& initialConnection,
27+
std::pair<std::string,std::string> makeFrontierConnectionString( const std::string& initialConnection,
2828
const std::string& transactionId ){
2929
std::string realConn = initialConnection;
3030
std::string proto("frontier://");
@@ -58,18 +58,18 @@ namespace cond {
5858
refreshConnect.insert(0, "http://");
5959
}
6060
}
61-
return realConn;
61+
return std::make_pair(realConn,refreshConnect);
6262
}
6363

64-
std::string getRealConnectionString( const std::string& initialConnection ){
64+
std::pair<std::string,std::string> getRealConnectionString( const std::string& initialConnection ){
6565
return getRealConnectionString( initialConnection, "" );
6666
}
6767

68-
std::string getRealConnectionString( const std::string& initialConnection,
69-
const std::string& transId ){
68+
std::pair<std::string,std::string> getRealConnectionString( const std::string& initialConnection,
69+
const std::string& transId ){
7070
auto connData = parseConnectionString( initialConnection );
7171
if( std::get<0>(connData) == "frontier" ) return makeFrontierConnectionString( initialConnection, transId );
72-
return initialConnection;
72+
return std::make_pair(initialConnection,"");
7373
}
7474

7575
}

‎CondCore/CondDB/src/DbConnectionString.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ namespace cond {
88

99
namespace persistency {
1010

11-
std::string getRealConnectionString( const std::string& initialConnection );
11+
std::pair<std::string,std::string> getRealConnectionString( const std::string& initialConnection );
1212

13-
std::string getRealConnectionString( const std::string& initialConnection, const std::string& transId );
13+
std::pair<std::string,std::string> getRealConnectionString( const std::string& initialConnection, const std::string& transId );
1414

1515
}
1616

‎CondCore/CondDB/src/SessionImpl.cc

+15-20
Original file line numberDiff line numberDiff line change
@@ -86,27 +86,22 @@ namespace cond {
8686

8787
void SessionImpl::startTransaction( bool readOnly ){
8888
if( !transaction.get() ){
89-
transaction.reset( new CondDBTransaction( coralSession ) );
90-
coralSession->transaction().start( readOnly );
91-
iovSchemaHandle.reset( new IOVSchema( coralSession->nominalSchema() ) );
92-
gtSchemaHandle.reset( new GTSchema( coralSession->nominalSchema() ) );
93-
std::unique_ptr<IIOVSchema> iovSchema( new IOVSchema( coralSession->nominalSchema() ) );
94-
std::unique_ptr<IGTSchema> gtSchema( new GTSchema( coralSession->nominalSchema() ) );
95-
if( !iovSchemaHandle->exists() ){
96-
cond::DbConnection oraConnection;
97-
cond::DbSession oraSession = oraConnection.createSession();
98-
oraSession.open( coralSession, connectionString );
99-
std::unique_ptr<IIOVSchema> oraIovSchema( new OraIOVSchema( oraSession ) );
100-
std::unique_ptr<IGTSchema> oraGtSchema( new OraGTSchema( oraSession ) );
101-
oraSession.transaction().start( readOnly );
102-
// try if it is an old iov or GT schema
103-
if( oraIovSchema->exists() || oraGtSchema->exists() ){
104-
iovSchemaHandle = std::move(oraIovSchema);
105-
gtSchemaHandle = std::move(oraGtSchema);
106-
transaction.reset( new OraTransaction( oraSession ) );
107-
}
89+
cond::DbConnection oraConnection;
90+
cond::DbSession oraSession = oraConnection.createSession();
91+
oraSession.open( coralSession, connectionString );
92+
transaction.reset( new OraTransaction( oraSession ) );
93+
oraSession.transaction().start( readOnly );
94+
iovSchemaHandle.reset( new OraIOVSchema( oraSession ) );
95+
gtSchemaHandle.reset( new OraGTSchema( oraSession ) );
96+
if( !iovSchemaHandle->exists() && !gtSchemaHandle->exists() ){
97+
std::unique_ptr<IIOVSchema> iovSchema( new IOVSchema( coralSession->nominalSchema() ) );
98+
std::unique_ptr<IGTSchema> gtSchema( new GTSchema( coralSession->nominalSchema() ) );
99+
if( iovSchema->exists() ){
100+
iovSchemaHandle = std::move(iovSchema);
101+
gtSchemaHandle = std::move(gtSchema);
102+
transaction.reset( new CondDBTransaction( coralSession ) );
103+
}
108104
}
109-
110105
} else {
111106
if(!readOnly ) throwException( "An update transaction is already active.",
112107
"SessionImpl::startTransaction" );

‎CondCore/CondDB/test/BuildFile.xml

+2
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,5 @@
1212
<bin file="testPayloadProxy.cpp" name="testPayloadProxy">
1313
<lib name="testCondDBDict"/>
1414
</bin>
15+
<bin file="testFrontier.cpp" name="testFrontier">
16+
</bin>

‎CondCore/CondDB/test/testFrontier.cpp

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#include "FWCore/PluginManager/interface/PluginManager.h"
2+
#include "FWCore/PluginManager/interface/standard.h"
3+
#include "FWCore/PluginManager/interface/SharedLibrary.h"
4+
#include "FWCore/ParameterSet/interface/ParameterSet.h"
5+
#include "FWCore/ServiceRegistry/interface/ServiceRegistry.h"
6+
//
7+
#include "CondCore/CondDB/interface/ConnectionPool.h"
8+
#include "CondCore/CondDB/interface/PayloadProxy.h"
9+
//
10+
#include "MyTestData.h"
11+
//
12+
#include <fstream>
13+
#include <iomanip>
14+
#include <cstdlib>
15+
#include <iostream>
16+
17+
using namespace cond::persistency;
18+
19+
int main (int argc, char** argv)
20+
{
21+
edmplugin::PluginManager::Config config;
22+
edmplugin::PluginManager::configure(edmplugin::standard::config());
23+
24+
std::vector<edm::ParameterSet> psets;
25+
edm::ParameterSet pSet;
26+
pSet.addParameter("@service_type",std::string("SiteLocalConfigService"));
27+
psets.push_back(pSet);
28+
static const edm::ServiceToken services(edm::ServiceRegistry::createSet(psets));
29+
static const edm::ServiceRegistry::Operate operate(services);
30+
31+
std::string connectionString("frontier://FrontierProd/CMS_COND_31X_RUN_INFO");
32+
std::cout <<"# Connecting with db in "<<connectionString<<std::endl;
33+
try{
34+
//*************
35+
ConnectionPool connPool;
36+
connPool.setMessageVerbosity( coral::Debug );
37+
Session session = connPool.createSession( connectionString );
38+
session.transaction().start();
39+
IOVProxy iov = session.readIov( "runinfo_31X_hlt", true );
40+
std::cout << "Loaded size="<<iov.loadedSize()<<std::endl;
41+
session.transaction().commit();
42+
} catch (const std::exception& e){
43+
std::cout << "ERROR: " << e.what() << std::endl;
44+
return -1;
45+
} catch (...){
46+
std::cout << "UNEXPECTED FAILURE." << std::endl;
47+
return -1;
48+
}
49+
}
50+

‎CondCore/IOVService/src/IOVProxy.cc

+1
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ int cond::IOVProxy::size() const {
274274
}
275275

276276
cond::IOVSequence const & cond::IOVProxy::iov() const {
277+
if( !m_iov->data.get() ) throwException( "No data found.", "IOVProxy::iov" );
277278
return *(m_iov->data);
278279
}
279280

‎CondCore/MetaDataService/src/MetaData.cc

-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ cond::MetaData::addMapping(const std::string& name,
3737
const std::string& iovtoken,
3838
cond::TimeType ){
3939
try{
40-
if(!m_userSession.storage().exists()) return false;
4140
ora::OId oid;
4241
oid.fromString( iovtoken );
4342
m_userSession.storage().setObjectName( name, oid );
@@ -53,7 +52,6 @@ const std::string
5352
cond::MetaData::getToken( const std::string& name ) const{
5453
bool ok=false;
5554
std::string iovtoken("");
56-
if(!m_userSession.storage().exists()) return iovtoken;
5755
try{
5856
ora::OId oid;
5957
ok = m_userSession.storage().getItemId( name, oid );
@@ -69,7 +67,6 @@ cond::MetaData::getToken( const std::string& name ) const{
6967

7068
bool cond::MetaData::hasTag( const std::string& name ) const{
7169
bool result=false;
72-
if(!m_userSession.storage().exists()) return result;
7370
try{
7471
ora::OId oid;
7572
result = m_userSession.storage().getItemId( name, oid );

‎CondCore/MetaDataService/test/testMetaData.cpp

+9-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,17 @@ int main(){
2323
coralDb.open("sqlite_file:meta.db");
2424

2525
//test errors
26-
coralDb.transaction().start(true);
26+
coralDb.transaction().start(false);
27+
if(coralDb.storage().exists()){
28+
coralDb.storage().drop();
29+
}
2730
coralDb.createDatabase();
31+
32+
coralDb.transaction().commit();
33+
34+
coralDb.transaction().start(true);
2835
cond::MetaData metadata(coralDb);
29-
if(metadata.hasTag("crap")) std::cout << "wrong" << std::endl;
36+
if(metadata.hasTag("crap")) std::cout << "ERROR: wrong assertion" << std::endl;
3037
/**
3138
try {
3239
cond::MetaDataEntry result;

‎CondCore/Utilities/bin/conddb_test_gt_load.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ int cond::TestGTLoad::execute(){
173173

174174
ConnectionPool connPool;
175175
if( hasDebug() ) connPool.setMessageVerbosity( coral::Debug );
176-
Session session = connPool.createSession( connect, true );
176+
Session session = connPool.createSession( connect );
177177
session.transaction().start();
178178

179179
std::cout <<"Loading Global Tag "<<gtag<<std::endl;

‎SimCalorimetry/HcalSimProducers/python/hcalSimParameters_cfi.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
firstRing = cms.int32(1),
3434
binOfMaximum = cms.int32(5),
3535
doPhotoStatistics = cms.bool(True),
36-
photoelectronsToAnalog = cms.vdouble([4.0]*16),
36+
photoelectronsToAnalog = cms.vdouble(0.24, 0.24, 0.24, 0.24,
37+
0.17, 0.17, 0.17, 0.17, 0.17, 0.17,
38+
0.17, 0.17, 0.17, 0.17, 0.17),
3739
simHitToPhotoelectrons = cms.double(4000.0), # is not actually used
3840
samplingFactors = cms.vdouble(231.0, 231.0, 231.0, 231.0,
3941
360.0, 360.0, 360.0, 360.0, 360.0, 360.0,
@@ -42,9 +44,7 @@
4244
timePhase = cms.double(5.0),
4345
timeSmearing = cms.bool(False),
4446
# 0 is HPD, 1 is SiPM, 2 fetches HPD/Zecotek/Hamamatsufrom DB
45-
siPMCode = cms.int32(1),
46-
pixels = cms.int32(2500),
47-
doSiPMSmearing = cms.bool(False)
47+
siPMCode = cms.int32(2)
4848
),
4949
hb = cms.PSet(
5050
readoutFrameSize = cms.int32(10),
@@ -61,8 +61,7 @@
6161
syncPhase = cms.bool(True),
6262
timePhase = cms.double(6.0),
6363
timeSmearing = cms.bool(True),
64-
siPMCells = cms.vint32(),
65-
doSiPMSmearing = cms.bool(True)
64+
siPMCells = cms.vint32()
6665
),
6766
he = cms.PSet(
6867
readoutFrameSize = cms.int32(10),
@@ -77,8 +76,7 @@
7776
190.90, 193.06, 188.42, 188.42),
7877
syncPhase = cms.bool(True),
7978
timePhase = cms.double(6.0),
80-
timeSmearing = cms.bool(True),
81-
doSiPMSmearing = cms.bool(True)
79+
timeSmearing = cms.bool(True)
8280
),
8381
zdc = cms.PSet(
8482
readoutFrameSize = cms.int32(10),

0 commit comments

Comments
 (0)
Please sign in to comment.