From: Peter C. Lee <cfl106@ps...> - 2003-08-20 05:41:36
I got the the following message when running my client program:
WARNING: server's message is too big (58392580 bytes). Truncating data.
The probability of this happening is quite low, but it does occur when
running the program in robot and in Stage simulation. Is there any
remedy to this problem?
From: brian gerkey <gerkey@ro...> - 2003-08-20 16:53:07
On Tue, 19 Aug 2003, Peter C. Lee wrote:
> I got the the following message when running my client program:
> WARNING: server's message is too big (58392580 bytes). Truncating data.
> The probability of this happening is quite low, but it does occur when
> running the program in robot and in Stage simulation. Is there any
> remedy to this problem?
I strongly suspect that problem is the following: your client is
(at least occasionally) consuming data more slowly than the server is
delivering it. After the TCP receive and send queues fill up, bytes
start getting thrown away. Then you end up with garbled Player packets
on the socket, manifested here by a nonsensical size specifier.
You can test this by using 'netstat' to inspect the TCP send/receive
queues between Player and your client. In general they should be
almost empty. If they're near 64K (that's the default size in Linux),
then your client is running too slowly.
But not to worry: you can either turn down the server's data rate (in
C++, use PlayerClient::SetFrequency()), or put switch to a PULL (rather
than PUSH) data delivery mode (in C++, use PlayerClient::SetDataMode())
in which case your client will request data one frame at a time.
Btw, I fixed this problem in the server, so that clients can run
arbitrarily slowly and not lose any data. Looking at the ChangeLog,
I made that fix at 2003-05-26 16:59, which was 2 days *after* the
1.3.2 release. So it's fixed in 1.4rc1, but that doesn't work with
Stage right now.