ETP / hdf 1.10.5

Hello,

Did you try to launch a couple of ETP client/server with fesapi compiled with hdf5 1.10.5 ?
I tryed the command PutDataObject against the testingPackageCpp.epc/h5
I got this error

HDF5-DIAG: Error detected in HDF5 (1.10.5) thread 0:
#000: /f2i-consulting/fesapi-superbuild/HDF5/src/H5O.c line 1130 in H5Oget_info_by_name(): can’t get info for object: ‘resqml20’
major: Object header
minor: Can’t get value
#001: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gloc.c line 731 in H5G_loc_info(): can’t find object
major: Symbol table
minor: Object not found
#002: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gtraverse.c line 851 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#003: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gtraverse.c line 627 in H5G__traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#004: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gloc.c line 684 in H5G_loc_info_cb(): name doesn’t exist
major: Symbol table
minor: Object not found
HDF5-DIAG: Error detected in HDF5 (1.10.5) thread 0:
#000: /f2i-consulting/fesapi-superbuild/HDF5/src/H5O.c line 1130 in H5Oget_info_by_name(): can’t get info for object: ‘99512190-1efd-4c39-9544-c50cfea618f3’
major: Object header
minor: Can’t get value
#001: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gloc.c line 731 in H5G_loc_info(): can’t find object
major: Symbol table
minor: Object not found
#002: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gtraverse.c line 851 in H5G_traverse(): internal path traversal failed
major: Symbol table
minor: Object not found
#003: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gtraverse.c line 627 in H5G__traverse_real(): traversal operator failed
major: Symbol table
minor: Callback failed
#004: /f2i-consulting/fesapi-superbuild/HDF5/src/H5Gloc.c line 684 in H5G_loc_info_cb(): name doesn’t exist
major: Symbol table
minor: Object not found
Acknowledge message_id 2
on_read : error code number 2 -> End of file

Should I use a previous version of hdf5 ?

Hi Lionel,

ETP support is still very experimental in etpServer example.
Furthermore, all “put” messages are not supported at all in the etpServer example. I should/will add a warning in the etpServer example.
For now, every FESAPI user should override these message handlers to do whatever they want in their own etp server.

Hi Philippe!

ok and what about the GetDataArrays ? I tryed it but the client and server did segfault

I think this one should work since it is listed in the help of the client example

void printHelp()
{
std::cout << “List of available commands :” << std::endl;
std::cout << “\tList” << std::endl << “\t\tList the objects which have been got from ETP to the in-memory epc” << std::endl << std::endl;
//std::cout << “\tGetDataspaces URI depth(default 1)” << std::endl << std::endl;
std::cout << “\tGetResources URI scope(default self) depth(default 1) countObjects(true or false, default is true) getObject(true or false, default is false) dataTypeFilter,dataTypeFilter,…(default noFilter)” << std::endl << std::endl;
std::cout << “\tGetDataObjects dataObjectURI,dataObjectURI,…” << std::endl << “\t\tGet the objects from an ETP store and store them into the in memory epc (only create partial TARGET relationships, not any SOURCE relationships)” << std::endl << std::endl;
std::cout << “\tPutDataObject” << std::endl << “\t\tCreate an IJK Grid on the fly and put/push it to the store” << std::endl << std::endl;
std::cout << “\tGetSourceObjects dataObjectURI” << std::endl << “\t\tGet the source objects of another object from an ETP store and put it into the in memory epc” << std::endl << std::endl;
std::cout << “\tGetTargetObjects dataObjectURI” << std::endl << “\t\tGet the target objects of another object from an ETP store and put it into the in memory epc” << std::endl << std::endl;
std::cout << “\tGetResourceObjects dataObjectURI” << std::endl << “\t\tGet the object, its source and its target objects from an ETP store and put it into the in memory epc” << std::endl << std::endl;
std::cout << “\tGetDataArrays epcExternalPartURI datasetPathInEpcExternalPart” << std::endl << “\t\tGet the numerical values from a dataset included in an EpcExternalPart over ETP.” << std::endl << std::endl;
std::cout << “\tSubscribeNotif URI scope(default self) depth(default 1) receiveXML(true or false, default is true) startTime(default is now) dataTypeFilter,dataTypeFilter,…(default noFilter)” << std::endl << “\t\tSubscribe to notifications.” << std::endl << std::endl;
std::cout << “\tquit” << std::endl << “\t\tQuit the session.” << std::endl << std::endl;
}

I will give a try and fix if necessary or come back to you with an answer.

This is my order:
GetDataArrays eml:///eml20.obj_EpcExternalPartReference(f448a02c-6f39-43a8-a533-d0b2dd22a666) /resqml20/6e678338-3b53-49b6-8801-faee493e0c42/points_patch0

Message on the server:

Data array received uri : eml:///eml20.obj_EpcExternalPartReference(f448a02c-6f39-43a8-a533-d0b2dd22a666)
Received pathInResource : /resqml20/6e678338-3b53-49b6-8801-faee493e0c42/points_patch0
terminate called after throwing an instance of ‘boost::wrapexceptboost::bad_any_cast
what(): boost::bad_any_cast: failed conversion using boost::any_cast

Message on the client:

/resqml20/6e678338-3b53-49b6-8801-faee493e0c42/points_patch0
on_read : error code number 2 -> End of file
End IOC

I can reproduce the bug and am working on it.

Now in CI : https://github.com/F2I-Consulting/fesapi/pull/241

1 Like

Done!
It should now work.
Thanks for having raised this issue and I hope you will manage PutDataObject easily on your own server.