cancel
Showing results for 
Search instead for 
Did you mean: 

SIS - Ultralite's ML_GET_SERVER_NOTIFICATION always returns null

Former Member
20,089

I am trying to get an Ultralite database to connect to a remote notifier for server initiated syncing. Whenever I call the ML GET SERVER NOTIFICATION it always returns null, regardless of what key value I put in there.

The key value represents the same as the poll_key value for the SQL Anywhere Listener correct?

This should have been included sorry. SQL Anywhere 12.0.1.3554, same version of ultralite. In the ultralite I've just been calling

SELECT ML_GET_SERVER_NOTIFICATION('MyTestNotifier', 'tcpip{host=testServer;port=1234}', null);
SELECT ML_GET_SERVER_NOTIFICATION('MyTestNotifier', 'tcpip{host=testServer;port=1234}', 'poll_key');

as the example states. testServer is actually the IP address of my testServer, and the port is specified in the mobilink servers -x tcpip{} value. These values all work on the SQL Anywhere remote database. It returns the subject and content and allows me to perform different actions based on the subject. But the ultralite call always returns null. I've also tried substituting the notifier key 'null' with the value found in my poll_key for the SQL Anywhere remote database. Still returns null.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member

I apologize, after reviewing the log files it turns out this was an issue with our setup. Setting the verbosity of SIS to 5 was the key in figuring out what was happening.

call ml_add_property( 'SIS', 'global', 'verbosity', 5 );

Looking through the log files I noticed that my pollkey value kept getting removed from the request cursor. I would set the request cursor value, check the log file the pollKey was set. I would check the request cursor literally 30 seconds later and the pollKey value was removed from the request cursor.

I stopped the mobilink server, started a new one up with a different port. Retried the test, and everything worked. I got my first value back from ultralite.

It turns out, not one.. but two other developers were using the same user I was. And one of them had set our autosync property to 1 minute. Every time a sync occurred our sync scripts remove the user from the request cursor. Between the three of us using the same test user we were syncing too often, and my test wasn't working. Whereas my test with the remote database was working because it was using the dblsn at a rate of 5 second intervals.

Thanks Tim and Reg for the time spent responding to this question.

regdomaratzki
Product and Topic Expert
Product and Topic Expert

Glad to hear the extra verbosity helped out, and thanks for posting back with the solution. Please don't forget to drop the vebosity back down when you go into production, since verobsity 5 is a bit of performance hit.

Former Member

two other developers were using the same user I was.

@Peacock Was that the MobiLink user? If so, it might be better to use the remote ID...

Answers (0)