Hi Francesc!

This big question is still open to me. We were playing around with
compression methods, chunk sizes and so on. But basicaly this was a
"production system". That's why I am working hard on that issue to avoid
this failure in future. (This was with python2.4.3 and pytables-1.3.2)

By the way, using python2.4.4 and pytables-1.3.3 I found a warning, that
was new to me:

/home/achim/local/lib/python2.4/site-packages/tables/Table.py:1971:
PerformanceWarning: table ``/data_pool/dict_Echo_Height__pos_`` is being
preempted from alive nodes without its buffers being flushed. This may
lead to very ineficient use of resources and even to fatal errors in
certain situations. Please, do a call to the .flush() method on this
table before start using other nodes.
Caller was write_hdf5:130 in file
/home/achim/damaris/frontends/reddamaris/DataPool.py.
  PerformanceWarning)

I do not understand this:
What means "preempted from alive nodes"?
Does "this table" refer to dict_Echo_Height__pos_ or to the owners of
"alive nodes"

The node works with a table of 10 or 20 rows only.

        h5_table_format= {
            "x" : tables.Float64Col(),
            "y_mean" : tables.Float64Col(),
            "y_sigma" : tables.Float64Col(),
            "n" : tables.Int64Col()
            }

        mr_table=hdffile.createTable(where=where,name=name,
                                     description=h5_table_format,
                                     title=title,
                                     expectedrows=len(self))
        mr_table.attrs.damaris_type="MeasurementResult"
        self.lock.acquire()
        try:
            mr_table.attrs.quantity_name=self.quantity_name
               
            row=mr_table.row
            for x in self.get_xdata():
                y=UserDict.UserDict.__getitem__(self,x)
                row["x"]=x
                if type(y) is types.FloatType:
                    row["y_mean"]=y
                    row["y_sigma"]=0.0
                    row["n"]=1
                else:
                    row["y_mean"]=y.mean()
                    row["y_sigma"]=y.mean_sigma()
                    row["n"]=y.n
                row.append()

        finally:
            #mr_table.flush()
            self.lock.release()

This is the code. Till now I thought, there is no necessity for a
flush... ReReading the manual I fear, I did make a misstake. I added the
comment line  and the warning vanished (of course removing the #).

Is it possible that both errors were related?

Yours, Achim  

Francesc Altet wrote:
> Mmm... the question should rather be how you have been able to create a
> PyTables file with a leaf without a FLAVOR attribute. If you can
> reproduce the way, please, tell me (I'm very much intrigued).
>
> OTOH, in PyTables 2.0 the default for 'FLAVOR' will be 'numpy', of
> course. But until 2.0 arrives, a 'numarray' value is probably a more
> sensible default.
>
> Cheers,
>
>   


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Pytables-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pytables-users

Reply via email to