Improve caching.

This commit is contained in:
Kristian Bendiksen 2024-08-26 19:21:24 +02:00
parent 48e32668ec
commit 0518e594ce
4 changed files with 26 additions and 21 deletions

View File

@ -440,7 +440,7 @@ void RiaSumoConnector::requestParametersBlobIdForEnsemble( const SumoCaseId& cas
{ {
if ( reply->error() == QNetworkReply::NoError ) if ( reply->error() == QNetworkReply::NoError )
{ {
parseBlobIds( reply, caseId, ensembleName, "" ); parseBlobIds( reply, caseId, ensembleName, "", true );
} }
else else
{ {
@ -493,7 +493,7 @@ void RiaSumoConnector::requestBlobIdForEnsemble( const SumoCaseId& caseId, const
{ {
if ( reply->error() == QNetworkReply::NoError ) if ( reply->error() == QNetworkReply::NoError )
{ {
parseBlobIds( reply, caseId, ensembleName, vectorName ); parseBlobIds( reply, caseId, ensembleName, vectorName, false );
} }
} ); } );
} }
@ -862,7 +862,11 @@ void RiaSumoConnector::parseRealizationNumbers( QNetworkReply* reply, const Sumo
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RiaSumoConnector::parseBlobIds( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName ) void RiaSumoConnector::parseBlobIds( QNetworkReply* reply,
const SumoCaseId& caseId,
const QString& ensembleName,
const QString& vectorName,
bool isParameters )
{ {
QByteArray result = reply->readAll(); QByteArray result = reply->readAll();
reply->deleteLater(); reply->deleteLater();

View File

@ -119,7 +119,7 @@ public slots:
void parseCases( QNetworkReply* reply ); void parseCases( QNetworkReply* reply );
void parseVectorNames( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName ); void parseVectorNames( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName );
void parseRealizationNumbers( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName ); void parseRealizationNumbers( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName );
void parseBlobIds( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName ); void parseBlobIds( QNetworkReply* reply, const SumoCaseId& caseId, const QString& ensembleName, const QString& vectorName, bool isParameters );
void requestFailed( const QAbstractOAuth::Error error ); void requestFailed( const QAbstractOAuth::Error error );
void parquetDownloadComplete( const QString& blobId, const QByteArray&, const QString& url ); void parquetDownloadComplete( const QString& blobId, const QByteArray&, const QString& url );

View File

@ -117,10 +117,8 @@ void RimSummaryEnsembleSumo::loadSummaryData( const RifEclipseSummaryAddress& re
auto sumoCaseId = m_sumoDataSource->caseId(); auto sumoCaseId = m_sumoDataSource->caseId();
auto sumoEnsembleName = m_sumoDataSource->ensembleName(); auto sumoEnsembleName = m_sumoDataSource->ensembleName();
auto key = ParquetKey{ sumoCaseId, sumoEnsembleName, resultText }; auto key = ParquetKey{ sumoCaseId, sumoEnsembleName, resultText, false };
if ( m_parquetTable.find( key ) == m_parquetTable.end() ) if ( m_parquetTable.find( key ) == m_parquetTable.end() )
{
{ {
auto contents = loadParquetData( key ); auto contents = loadParquetData( key );
RiaLogging::debug( QString( "Load Summary Data. Contents size: %1" ).arg( contents.size() ) ); RiaLogging::debug( QString( "Load Summary Data. Contents size: %1" ).arg( contents.size() ) );
@ -131,17 +129,18 @@ void RimSummaryEnsembleSumo::loadSummaryData( const RifEclipseSummaryAddress& re
distributeDataToRealizations( resultAddress, table ); distributeDataToRealizations( resultAddress, table );
} }
auto parametersKey = ParquetKey{ sumoCaseId, sumoEnsembleName, "", true };
if ( m_parquetTable.find( parametersKey ) == m_parquetTable.end() )
{ {
auto contents = m_sumoConnector->requestParametersParquetDataBlocking( sumoCaseId, sumoEnsembleName ); auto contents = m_sumoConnector->requestParametersParquetDataBlocking( sumoCaseId, sumoEnsembleName );
RiaLogging::debug( QString( "Load ensemble parameter sensitivities. Contents size: %1" ).arg( contents.size() ) ); RiaLogging::debug( QString( "Load ensemble parameter sensitivities. Contents size: %1" ).arg( contents.size() ) );
std::shared_ptr<arrow::Table> table = std::shared_ptr<arrow::Table> table = readParquetTable( contents, QString( "%1 parameter sensitivities" ).arg( sumoEnsembleName ) );
readParquetTable( contents, QString::fromStdString( resultAddress.uiText() + " parameter sensitivities" ) ); m_parquetTable[parametersKey] = table;
distributeParametersDataToRealizations( table ); distributeParametersDataToRealizations( table );
} }
} }
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///

View File

@ -39,10 +39,12 @@ struct ParquetKey
SumoCaseId caseId; SumoCaseId caseId;
QString ensembleId; QString ensembleId;
QString vectorName; QString vectorName;
bool isSensitivityParameters;
auto operator<=>( const ParquetKey& other ) const auto operator<=>( const ParquetKey& other ) const
{ {
return std::tie( caseId, ensembleId, vectorName ) <=> std::tie( other.caseId, other.ensembleId, other.vectorName ); return std::tie( caseId, ensembleId, vectorName, isSensitivityParameters ) <=>
std::tie( other.caseId, other.ensembleId, other.vectorName, other.isSensitivityParameters );
} }
}; };