diff --git a/modules/Bio/EnsEMBL/Registry.pm b/modules/Bio/EnsEMBL/Registry.pm index 9fa259a26a42e89d64d812489c780ed17862aeb6..318e7c2c37d9fe2a6c4eec561286ad109d897329 100644 --- a/modules/Bio/EnsEMBL/Registry.pm +++ b/modules/Bio/EnsEMBL/Registry.pm @@ -1743,6 +1743,7 @@ sub load_registry_from_db { my $taxonomy_db; my $ensembl_metadata_db; + my $ensembl_metadata_db_versioned; my $production_dba_ok = eval { require Bio::EnsEMBL::Production::DBSQL::DBAdaptor; 1 }; @@ -1818,6 +1819,11 @@ sub load_registry_from_db { $taxonomy_db = $db; } elsif ( $db =~ /^ensembl_metadata$/ ) { $ensembl_metadata_db = $db; + } + elsif ( $db =~ m{ \A ensembl_metadata_(\d+) \z }msx ) { + if ( $1 eq $software_version ) { + $ensembl_metadata_db_versioned = $db; + } } elsif ( $production_dba_ok and $db =~ /^ensembl(?:genomes)?_production(_\d+)?/x ) { # production db can come with no version (i.e. that on ens-staging1), # but it's backed up with a release number @@ -2349,7 +2355,7 @@ sub load_registry_from_db { # ensembl_metadata - if ( defined $ensembl_metadata_db) { + if ( ( defined $ensembl_metadata_db ) || ( defined $ensembl_metadata_db_versioned ) ) { my $has_metadata = eval {require Bio::EnsEMBL::MetaData::DBSQL::MetaDataDBAdaptor}; if($@ or (!defined $has_metadata)) { @@ -2357,6 +2363,16 @@ sub load_registry_from_db { print "ensembl_metadata API not found - ignoring $ensembl_metadata_db\n"; } } else { + + my $metadata_dbname; + # Versioned database has priority over unversioned one. + if ( defined $ensembl_metadata_db_versioned ) { + $metadata_dbname = $ensembl_metadata_db_versioned; + } + else { + $metadata_dbname = $ensembl_metadata_db; + } + my $dba = Bio::EnsEMBL::MetaData::DBSQL::MetaDataDBAdaptor->new( '-species' => 'multi' . $species_suffix, '-group' => 'metadata', @@ -2364,10 +2380,10 @@ sub load_registry_from_db { '-port' => $port, '-user' => $user, '-pass' => $pass, - '-dbname' => $ensembl_metadata_db, ); + '-dbname' => $metadata_dbname, ); if ($verbose) { - printf( "%s loaded\n", $ensembl_metadata_db ); + printf( "%s loaded\n", $metadata_dbname ); } } }