Archived

This forum has been archived. Please start a new discussion on GitHub.

about the size of message

In my project, I should pass a parameter from client to server as a sequence, but I do not know the possible size coz it depends on the user's mind, so I set the Ice_MessageMaxSize as 1024000, but the problem is still, when client pass a message which size about 5M, before the method is be invoked on the server side, the error on client side show as "run time error" without more info, how should I do next? thanks!!

Comments

  • marc
    marc Florida
    Note that it's Ice.MessageSizeMax, not Ice_MessageSizeMax. You need to set this for both your client and your server.

    As for the run time error, you should find out what causes the problem using a debugger. Perhaps it's an uncaught Ice exception?
  • sorry, my means is Ice.MessageSizeMax too.
    of course I set it both client and server, actually, before I not set it, Ice throw an exception of MessageSizeMax, but after I set it both client and server, when I debug the client, the debugger stopped a while when invoke the method, and then show the run time error, the server do nothing , it means the server side do not receive any message?
  • We need to know exactly what run-time error you are getting. Please attach a debugger to your process and get a stack trace for the error. (Is the client written in C++ or in Java?) Also, please run the client and server with --Ice.Trace.Protocol=3 -- this may help to shed light on the problem.

    Cheers,

    Michi.
  • client was wrote in c++ , thanks first!
    =================================================

    ice definition:
    sequence<string> DAOIceParameters;

    =====================================================================
    source code:

    DAOIceParameters m_Vparam;

    proxy->SetParameters(m_token,ObjectType,m_Vparam);

    =====================================================================
    server side

    [ Protocol: received request
    message type = 0 (request)
    compression status = 1 (compression not used, supported by sender)
    message size = 55
    request id = 12
    identity = conn
    facet =
    operation = SetBufferSize
    idempotent = false
    context = ]
    [ Protocol: sending reply
    message type = 2 (reply)
    compression status = 1 (compression not used, supported by sender)
    message size = 33
    request id = 12
    reply status = 0 (ok) ]
    [ Network: sent 33 of 33 bytes via tcp
    local address = 129.0.3.88:10000
    remote address = 129.0.3.88:1163 ]
    [ Network: received 14 of 14 bytes via tcp
    local address = 129.0.3.88:10000
    remote address = 129.0.3.88:1163 ]
    [ Network: received 55 of 55 bytes via tcp
    local address = 129.0.3.88:10000
    remote address = 129.0.3.88:1163 ]
    [ Protocol: received request
    message type = 0 (request)
    compression status = 1 (compression not used, supported by sender)
    message size = 69
    request id = 13
    identity = conn
    facet =
    operation = SetParameterHead
    idempotent = false
    context = ]
    [ Protocol: sending reply
    message type = 2 (reply)
    compression status = 1 (compression not used, supported by sender)
    message size = 33
    request id = 13
    reply status = 0 (ok) ]
    [ Network: sent 33 of 33 bytes via tcp
    local address = 129.0.3.88:10000
    remote address = 129.0.3.88:1163 ]
    =====================================================================
    client side

    [ Protocol: sending request
    message type = 0 (request)
    compression status = 1 (compression not used, supported by sender)
    message size = 55
    request id = 12
    identity = conn
    facet =
    operation = SetBufferSize
    idempotent = false
    context = ]
    [ Network: sent 55 of 55 bytes via tcp
    local address = 129.0.3.88:1163
    remote address = 129.0.3.88:10000 ]
    [ Network: received 14 of 14 bytes via tcp
    local address = 129.0.3.88:1163
    remote address = 129.0.3.88:10000 ]
    [ Network: received 19 of 19 bytes via tcp
    local address = 129.0.3.88:1163
    remote address = 129.0.3.88:10000 ]
    [ Protocol: received reply
    message type = 2 (reply)
    compression status = 1 (compression not used, supported by sender)
    message size = 33
    request id = 12
    reply status = 0 (ok) ]
    [ Protocol: sending request
    message type = 0 (request)
    compression status = 1 (compression not used, supported by sender)
    message size = 69
    request id = 13
    identity = conn
    facet =
    operation = SetParameterHead
    idempotent = false
    context = ]
    [ Network: sent 69 of 69 bytes via tcp
    local address = 129.0.3.88:1163
    remote address = 129.0.3.88:10000 ]
    [ Network: received 14 of 14 bytes via tcp
    local address = 129.0.3.88:1163
    remote address = 129.0.3.88:10000 ]
    [ Network: received 19 of 19 bytes via tcp
    local address = 129.0.3.88:1163
    remote address = 129.0.3.88:10000 ]
    [ Protocol: received reply
    message type = 2 (reply)
    compression status = 1 (compression not used, supported by sender)
    message size = 33
    request id = 13
    reply status = 0 (ok) ]
    =====================================================================

    stack info

    KERNEL32! 77e7e8bb()
    MSVCRTD! _CxxThrowException@8 + 57 bytes
    ICE11D! 0170b31a()
    ICE11D! 0175b1fa()
    IceProxy::DAOIceConnection::SetParameters(int 31247512, char 0, const _STL::vector<_STL::basic_string<char,_STL::char_traits<char>,_STL::allocator<char> >,_STL::allocator<_STL::basic_string<char,_STL::char_traits<char>,_STL::allocator<char> > > > & {...}, ...) line 2510 + 29 bytes
    CIce_Recordset::Execute(int 0) line 326 + 85 bytes
    CIce_Recordset::AddParamRecord() line 268 + 15 bytes
    t_insert_longraw_data() line 206 + 13 bytes
    main(int 1, char * * 0x01391590) line 525
    mainCRTStartup() line 206 + 25 bytes
    KERNEL32! 77e7ca90()

    ====================================================================
  • bernard
    bernard Jupiter, FL
    If you could provide the same stack trace after installing the PDB files, it would be even more useful as we would get line numbers for:
    ICE11D! 0170b31a()
    ICE11D! 0175b1fa()

    It looks like you're using Ice 1.1; any reason not to upgrade to a more recent version? Which C++ compiler do you use?

    Cheers,
    Bernard
  • marc
    marc Florida
    The Ice.MessageSizeMax property has been added in Ice 1.2. You are still using 1.1, which explains why this property doesn't do anything for you. You should upgrade to the latest version and try again.
  • After upgrade to 1.4, it is ok, thanks all of you.

    another question is how to improve the speed of data transfer by ICE ?

    in my programme, it should transfer lots of data between server and client, the possible size is about 10M, then how to do improve the speed of transfer ? thanks more.
  • marc
    marc Florida
    There are no options to somehow magically increase the speed of Ice, other than compiling with optimization. You can measure throughput with the demo in demo/Ice/throughput.