Forum Discussion

rwhit_80204's avatar
rwhit_80204
Icon for Nimbostratus rankNimbostratus
Nov 09, 2010

set_monitor_state throws AxisFault with return code 0

I have a java app used to gracefully disable pool members for maintenance and then re-enable (I'm sure the code originated with one of the examples here). Recently an AxisFault is thrown with a return code of 0 upon callling set_monitor_state:

 

 

AxisFault
 faultCode: {http://xml.apache.org/axis/}HTTP
 faultSubcode:
 faultString: (0)null
 faultActor:
 faultNode:
 faultDetail:
        {}:return code:  0
        {http://xml.apache.org/axis/}HttpErrorCode:0
(0)null
        at
org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
        at
org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
        at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at
iControl.LocalLBPoolMemberBindingStub.set_monitor_state(LocalLBPoolMemberBindingStub.java:1514)
        at BigIpController.setStatus(BigIpController.java:180)
        at BigIpController.main(BigIpController.java:592)
Note that this code works >90% of the time. What does this fault mean? Is the best strategy just to retry when this occurs?

 

4 Replies

  • Without seeing the input parameters it's hard to tell. If it works part of the time, then odds are there may be a server issue going on. Have you looked at the server logs to see if the iControlPortal had an issue (crash or something else logged)? I haven't heard of this issue before...

     

  • Hi Joe, Both Janeka and I work for the same company. We are still seeing this problem when we attempt to gracefully disable a pool member. Please let me know if you need any additional information. Thank you!

     

    =====From our log file: ... Current Connections: 4 Current Connections: 4 Current Connections: 4 AxisFault faultCode: {http://xml.apache.org/axis/}HTTP faultSubcode: faultString: (0)null faultActor: faultNode: faultDetail: {}:return code: 0

     

        {http://xml.apache.org/axis/}HttpErrorCode:0
    
    (0)null
        at org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:744)
        at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
        at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
        at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
        at org.apache.axis.client.Call.invoke(Call.java:2767)
        at org.apache.axis.client.Call.invoke(Call.java:2443)
        at org.apache.axis.client.Call.invoke(Call.java:2366)
        at org.apache.axis.client.Call.invoke(Call.java:1812)
        at iControl.LocalLBPoolMemberBindingStub.get_statistics(LocalLBPoolMemberBindingStub.java:1296)
        at com.premier.controls.MemberStopStart.checkConnections(MemberStopStart.java:83)
        at com.premier.controls.MemberStopStart.disablePoolMember(MemberStopStart.java:42)
        at com.premier.controls.ControlMain.Run(ControlMain.java:40)
        at com.premier.controls.ControlMain.main(ControlMain.java:18)

    ====Following is the code snippet where this problem occurs:

     

    private boolean checkConnections() {

     

    System.out.println("Waiting for current connections to drop to zero...");
    
        CommonIPPortDefinition memberDef = new CommonIPPortDefinition();
        memberDef.setAddress(memberAddress);
        memberDef.setPort(Long.parseLong(memberPort));
        CommonIPPortDefinition[] memberDefA = {memberDef};
        CommonIPPortDefinition[][] memberDefAofA = {memberDefA};
    
        long cur_connections = 1;
        while (cur_connections > 0) {
            LocalLBPoolMemberMemberStatistics[] memberStatsA = interfaces.getLocalLBPoolMember().get_statistics(poolArray, memberDefAofA);
            LocalLBPoolMemberMemberStatistics memberStats = memberStatsA[0];
            LocalLBPoolMemberMemberStatisticEntry[] statsEntryA = memberStats.getStatistics();
            LocalLBPoolMemberMemberStatisticEntry statsEntry = statsEntryA[0];
            CommonStatistic[] statsA = statsEntry.getStatistics();
            for (int i = 0; i < statsA.length; i++) {
                CommonStatisticType type = statsA[i].getType();
                CommonULong64 value64 = statsA[i].getValue();
                if (type == CommonStatisticType.STATISTIC_SERVER_SIDE_CURRENT_CONNECTIONS) {
                    cur_connections = value64.getLow();
                    System.out.println("Current Connections: " + cur_connections);
                }
            }
            Thread.currentThread();
            Thread.sleep(1000);
        }
        return true;

    }

     

  • This appears to be caused by a network issue (such as a timeout) which in turn caused the HTTP client to read NULL. This is a Java problem and is not specific to F5.

     

    References:

     

    • https://groups.google.com/forum/!topic/adwords-api/M-aOkaSa-c8
    • http://stackoverflow.com/questions/22083362/what-type-of-exception-is-0null?answertab=votestab-top
    • https://thejavablog.wordpress.com/2009/04/15/0null/