[Mondrian] RolapSchema #122

Sherman Wood swood at jaspersoft.com
Mon Feb 16 16:36:47 EST 2009


Yep - that looks weird and bad. I'll look into it too.




From: mondrian-bounces at pentaho.org [mailto:mondrian-bounces at pentaho.org]
On Behalf Of Matt Campbell
Sent: Tuesday, February 17, 2009 4:01 AM
To: Mondrian developer mailing list
Subject: [Mondrian] RolapSchema #122



It looks like a bug was introduced in the code which retrieves schemas
from the Pool.  In Pool.get() there is code which first loads the schema
from a given URL, then computes its checksum.  I've noticed that the new
Util.readVirtualFile() method will sometimes return the content of the
*previous* schema loaded.  


In the current code there is actually an extra read of the catalog--see
the bolded section below.  It's leftover from the previous approach for
loading the schema.  This should probably be cleaned up, but it helped me
find the issue.  When I've traced through this code I've seen that the
catalogStr returned by the old code (Util.readURL) is sometimes different
from the schema returned by Util.readVirtualFile.


I'm going to try to come up with a clean reproducible test case tomorrow,
but I thought I'd pass on what I've seen in case you see something
obviously wrong.


                try {

                    if (catalogStr == null) {

                        catalogStr = Util.readURL(catalogUrl);

                        // Use VFS to get the content


                        FileObject file =


                        StringBuilder buf = new StringBuilder(1000);

                        FileContent fileContent = file.getContent();

                        InputStream in = fileContent.getInputStream();

                        int n;

                        while ((n = in.read()) != -1) {

                            buf.append((char) n);


                        catalogStr = buf.toString();


                    md5Bytes = encodeMD5(catalogStr);

                } catch (Exception ex) {

                    // Note, can not throw an Exception from this method

                    // but just to show that all is not well in Mudville

                    // we print stack trace (for now - better to change

                    // method signature and throw).





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.pentaho.org/pipermail/mondrian/attachments/20090216/9032d1ad/attachment.html 

More information about the Mondrian mailing list