Re: Xindice 1.1: crash with NullPointerException

Olle Olsson <[email protected]> Thu, 10 Jun 2010 14:27:21 +0200
Newsgroups gmane.text.xml.xindice.user
Organization SICS
Message-ID <[email protected]>
Nataila,

Good suggestion, thanks.It helped me to see that I may face a more 
difficult problem. Some "symbol docs" cannot be found!

The following hierarchy is what I see in the Ugly Browser (for 1.1) ...

|  db
|    system
|      SysConfig
|        database.xml       (document)
|      SysSymbols
|        system_SysConfig   (document)
|        w3c-local_meta     (document)

Now, the part under SysSymbols does look strange!

I revived the old Xindice 1.0 version I have kept around, to have 
something to compare to.
And there I see that much data seems to be missing in my 1.1 system.

Tragically, core data has gone away:
  - system_SysAccess
  - system_SysGroups
  - system_SysObjects
  - system_SysUsers
But also the 100+ application data collections (only one such collection 
is seen)

For completeness, further down I reproduce the contents of the three 
documents thar *can* be seen.

To get some idea about whether actual files have disappeared in the file 
system, I looked at that,
but could not find anything unexpected (i.e., existence and size looked OK)

|  ../../../opt/xindice-1.1/w3c/system/SysAccess:
|  total 1
|  -rwxr--r--+ 1 olleo sics 12288 2003-08-12 19:36 SysAccess.tbl
|
|  ../../../opt/xindice-1.1/w3c/system/SysConfig:
|  total 5
|  -rw-rw-r--+ 1 olleo sics 45056 2010-06-09 10:56 SysConfig.tbl
|
|  ../../../opt/xindice-1.1/w3c/system/SysGroups:
|  total 1
|  -rwxr--r--+ 1 olleo sics 12288 2003-08-12 19:36 SysGroups.tbl
|
|  ../../../opt/xindice-1.1/w3c/system/SysObjects:
|  total 1
|  -rwxr--r--+ 1 olleo sics 12288 2003-08-12 19:36 SysObjects.tbl
|
|  ../../../opt/xindice-1.1/w3c/system/SysSymbols:
|  total 52
|  -rw-rw-r--+ 1 olleo sics 4202496 2010-06-09 10:56 SysSymbols.tbl
|
|  ../../../opt/xindice-1.1/w3c/system/SysUsers:
|  total 1
|  -rwxr--r--+ 1 olleo sics 12288 2003-08-12 19:36 SysUsers.tbl

The for the old Xindice 1.0, exactly the same was seen, except that 
SysSymbols.tbl had a size of 659456. (1.0 is run on a Windows/NT, 1.1 on 
Linux)

So, the 64,000 dollar question is: how is Xindice bootstrapped to find 
the system data? Now it fails to find much data and does this depend on 
information *in* the storage hierarch? Or does it depend on some other 
configuration data that no longer is in a healtthy state?

Really, I have no good clue how to progress on this.

/olle

==================================================================
The accessible system files
______________________
system_SysConfig

<?xml version="1.0" encoding="UTF-8"?>
<?xindice-class org.apache.xindice.xml.SymbolTable?>
<symbols>
<symbol name="filer" id="6"/>
<symbol name="compressed" id="5"/>
<symbol name="xmlobjects" id="2"/>
<symbol name="pagecount" id="8"/>
<symbol name="name" id="1"/>
<symbol name="indexes" id="9"/>
<symbol name="class" id="7"/>
<symbol name="collection" id="4"/>
<symbol name="collections" id="3"/>
<symbol name="database" id="0"/>
</symbols>

______________________
w3c-local_meta

<?xml version="1.0" encoding="UTF-8"?>
<?xindice-class org.apache.xindice.xml.SymbolTable?>
<symbols>
<symbol name="content" id="2"/>
<symbol name="static" id="1"/>
<symbol name="meta" id="0"/>
</symbols>


______________________
database.xml

<?xml version="1.0" encoding="UTF-8"?>
<database name="db">
<xmlobjects/>
<collections>
<collection compressed="true" name="w3c">
<filer class="org.apache.xindice.core.filer.BTreeFiler" pagecount="1"/>
<indexes/>
<xmlobjects/>

        ... and so on ...

</collection>
<collection compressed="true" name="w3c-local">
<filer class="org.apache.xindice.core.filer.BTreeFiler" pagecount="1"/>
<indexes/>
<xmlobjects/>

        .... and so on ....

</collection>
</collections>
</database>





On 2010-06-10 03:15, Natalia Shilenkova wrote:
> Hi Olle,
>
> Looking at the exception stack trace, I would say that you've got problem with collection symbol table. That would explain your problems accessing all the documents.
>
> I was able to reproduce exactly the same stack trace by intentionally modifying symbol table.
>
> When Xindice saves a document to the collection, the document is compressed, which means that its element and attribute names are replaced with generated identifiers. The information about these identifiers saved in the collection symbol table. When retrieving the document, Xindice looks up the identifiers and replaces them with actual names. If it encounters identifier that cannot be found in the table... well, that exception is what happens.
>
> I would suggest checking the symbol table first - it is just XML document that is located in /db/system/SysSymbols collection and document name is the same as collection path, but fragments of the path are separated with '_' instead of '/'. So, for collection /db/a/b/c it will be a_b_c.  Check if anything looks out of place, maybe you can see right away that some element or attribute names are missing...
>
> This is an example of symbol table for SysConfig collection:
> <?xml version="1.0" encoding="UTF-8"?>
> <?xindice-class org.apache.xindice.xml.SymbolTable?>
> <symbols>
>    <symbol name="filer" id="6"/>
>    <symbol name="inline-metadata" id="5"/>
>    <symbol name="compressed" id="4"/>
>    <symbol name="name" id="1"/>
>    <symbol name="indexes" id="8"/>
>    <symbol name="class" id="7"/>
>    <symbol name="collection" id="2"/>
>    <symbol name="collections" id="3"/>
>    <symbol name="database" id="0"/>
> </symbols>
>
> Regards,
> Natalia
>
>    


-- 
------------------------------------------------------------------
Olle Olsson   [email protected]   Tel: +46 8 633 15 19  Fax: +46 8 751 72 30
         [Svenska W3C-kontoret: [email protected]]
SICS [Swedish Institute of Computer Science]
Box 1263
SE - 164 29 Kista
Sweden
------------------------------------------------------------------