When the daemon is initializing, at least with the ipmidirect plugin, there exists a window when a user can open a session successfully, but the RPT, and probably other tables in the domain are not yet populated. Calling saHpiDiscover() immediately after saHpiSessionOpen() is a workaround for this problem, but the HPI specification says explicitly that it shall not be required to call saHpiDiscover() to see the tables populated.
Either the daemon should not accept open sessions until the RPT and other tables are populated at initialization, or the functions that query these tables for the user must know that they are not yet initialized, so that the data can be fetched just-in-time if requested. Probably just delying the accepting of new sessions until the initialization is really complete is the easiest.
It is not clear whether this is a problem in the plug-in or the main daemon code, but I have only seen it with the ipmidirect plugin.