You can check within the Service itself if the Infotable is empty and can set the Disabled (Boolean base type) during the runtime.
Are you checking for some of the columns in InfoTable or for no value at all in the Infotable i.e. no rows? You can also check this using the getRowCount() (note this will not work with JSON objects)
Hope this helps.
I have found that it seems to be that the variable from the infotable seems to go in an unknown state or something depending on the action perfomed. If you show the value from the infotable in a label it is empty but for the expression or validator it doesn't seem to be empty. I have found a solution to put the value from the infotable in a textbox (and hide it) and then use this value in my expression and that way it is always has same state namely empty when it needs to be.