• Type: New Feature
    • Status: Closed
    • Severity: Medium
    • Resolution: Fixed
    • Affects Version/s: None
    • Component/s: None
    • Labels:
    • Notice:
      When an issue is open, the "Fix Version/s" field conveys a target, not necessarily a commitment. When an issue is closed, the "Fix Version/s" field conveys the version that the issue was fixed in.


      Add JdbcConnectionUuid connect string parameter.

      === From an email to mondrian dev list ===

      It's important to me that connection factories (the means by which Mondrian gets JDBC connections to the underlying databases... which include instances of javax.sql.DataSource, or (URL, username) credentials) can be represented as strings. It was a mistake to allow javax.sql.DataSource objects to be passed into Mondrian when creating a connection via the legacy API. olap4j made it more difficult to pass in non-Strings, and that made life painful for some people. I thought it would be possible to just register DataSources in JNDI and pass in the JDNI name, but as Marc pointed out, Pentaho has to run in containers (such as Tomcat) with read-only JNDI environments.

      Mondrian already has a DataSourceResolver SPI. This is important, and this works. The one thing it doesn't do is tell Mondrian whether two data sources point to the same database.

      Consider setting up a distributed cache. It's important that all of the participating instances of Mondrian know that they are looking at the same database instance. If they don't know it's the same database, they can't safely share their cache. If we used an SPI to determine equality, it's difficult to ensure that the same SPI is being used on all machines. When I'm answering a support call, it's easy to forget to ask whether someone has overridden the default implementation of the SPI.

      So, how to tell whether two connection factories are the same, without introducing an SPI? We introduce a new connect string parameter, JdbcConnectionUuid. (This complements existing parameters Jdbc, JdbcUser, JdbcPassword and DataSource.) If two mondrian connections have the same JdbcConnectionUuid, Mondrian will take the client at its word that the back-end databases are identical. It will not consider the other parameters in determining equality.

      Determining whether two schemas are equal, and therefore candidates for sharing a cache, comes down to two parts: Are the connection factories equal (using JdbcConnectionUuid etc. as described above)? And are the contents of the XML schema files equal (using UseContentChecksum, Catalog, CatalogContent, DynamicSchemaProcessor, as today)? Both of these questions are answered by looking at a string.

      JdbcConnectionUuid is optional in the connection parameters. If not specified, Mondrian would use the same connection factory matching rules as today. (Internally, Mondrian will generate a Uuid so that all connections have one.)

      As its name suggests, it's a good idea if JdbcConnectionUuid is a UUID. But it doesn't need to be. It could be an MD5 hash. It could be anything the user likes. They should just make damn sure that it is unique.

      When we implement, we will provide a means to define the UUID alongside the connection credentials.

        Issue Links


          jhyde Julian Hyde created issue -
          jcornelius Jared Cornelius made changes -
          Field Original Value New Value
          Status Open [ 1 ] Open [ 1 ]
          Severity Unknown [ 7 ] Severe [ 3 ]
          Assignee Triage [ project admin ] Julian Hyde [ jhyde ]
          Fix Version/s 3.4.x (4.8.0 GA Suite Release) [ 11481 ]
          clopez Carlos Lopez made changes -
          Customer Case 26464
          wgorman Will Gorman (Inactive) made changes -
          Assignee Julian Hyde [ jhyde ] Pedro Alves [ pmalves ]
          jhyde Julian Hyde made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          bbruce Brandon Bruce (Inactive) made changes -
          Assignee Pedro Alves [ pmalves ] Unassigned User [ unassigned ]
          bbruce Brandon Bruce (Inactive) made changes -
          Assignee Unassigned User [ unassigned ] Brandon Bruce [ bbruce ]
          bbruce Brandon Bruce (Inactive) made changes -
          Assignee Brandon Bruce [ bbruce ] Unassigned User [ unassigned ]
          tband Tyler Band (Inactive) made changes -
          Assignee Unassigned User [ unassigned ] Tyler Band [ tband ]
          tband Tyler Band (Inactive) made changes -
          Assignee Tyler Band [ tband ] Unassigned User [ unassigned ]
          bbruce Brandon Bruce (Inactive) made changes -
          Assignee Unassigned User [ unassigned ] Brandon Bruce [ bbruce ]
          bbruce Brandon Bruce (Inactive) made changes -
          Status Resolved [ 5 ] Closed [ 6 ]
          QA Validation Status Not Yet Validated Validated by QA
          skarmali Sulaiman Karmali (Inactive) made changes -
          Link This issue is related to PRD-4003 [ PRD-4003 ]
          kcruzada Kurtis Cruzada made changes -
          Link This issue relates to BISERVER-7641 [ BISERVER-7641 ]
          jiraservice Jira Service Acct made changes -
          Customer Case (new) 26464


            • Assignee:
              bbruce Brandon Bruce (Inactive)
              jhyde Julian Hyde
            • Votes:
              2 Vote for this issue
              5 Start watching this issue


              • Created: