I'm using the JOTA : Library 0.9.11-SNAPSHOT API.

I am using Eclipse JUnit testing for the example found at https://github.com/iotaledger/iota.lib.java/blob/master/jota/src/test/java/jota/SendMessageTest.java - slightly modified code pasted below.

I am having sporadic success getting transactions processed on servers. I modified SendMessage, as shown, to allow me to define the PROTOCOL, HOST, and PORT properties when creating the iotaClient. This is done so that I can easily test servers. I turn a set of properties on by uncommenting the line. I added a comment at end of each property line with the results of each test. I got the servers from several listings: https://iotanode.host/
https://www.tangle-nodes.com/?sorts[load]=1&sorts[tls]=-1 http://www.iotatoken.nl/

Can someone please explain why I am getting sporadic results? Many severs simply do not work, others that do work are not consistent - sometimes they work, sometimes they fail for runs just minutes a part.

Thanks, Bob

package jota;

import jota.dto.response.SendTransferResponse;
import jota.error.ArgumentException;
import jota.model.Transfer;
import org.apache.commons.lang3.StringUtils;
import org.hamcrest.core.IsNull;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import cfb.pearldiver.PearlDiverLocalPoW;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static junit.framework.TestCase.assertEquals;
import static org.junit.Assert.assertThat;

public class SendMessageTestOrig {

    private static final String TEST_MESSAGE = "JUSTANOTHERJOTATEST";
    private static final String TEST_TAG = "JOTASPAM9999999999999999999";
    private static final int MIN_WEIGHT_MAGNITUDE = 14;
    private static final int DEPTH = 9;

    private IotaAPI iotaClient;

    public void createApiClientInstance() {

        //this version uses env vars
//        iotaClient = new IotaAPI.Builder()
//                   .localPoW(new PearlDiverLocalPoW())
//                   .build();

        //trying various servers
        iotaClient = new IotaAPI.Builder()
                   .localPoW(new PearlDiverLocalPoW())
//                 .protocol("http").host("node01.iotatoken.nl").port("14265") //java.lang.IllegalAccessError: 500
//                 .protocol("https").host("node02.iotatoken.nl").port("443") //status 500
//                 .protocol("http").host("node03.iotatoken.nl").port("15265") //usually works for messages, but been getting SocketTimeoutException; sometimes busy see http://www.iotatoken.nl for load
//                 .protocol("https").host("node04.iotatoken.nl").port("443") //status 500
//                 .protocol("http").host("node05.iotatoken.nl").port("16265") //java.lang.IllegalAccessError: 500
//                 .protocol("https").host("node06.iotatoken.nl").port("443") //status 500
//                 .protocol("https").host("node07.iotatoken.nl").port("17265") //java.net.ConnectException: Failed to connect to node07.iotatoken.nl/
//                 .protocol("https").host("node08.iotatoken.nl").port("18265") //javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
//                 .protocol("http").host("eugeneoldisoft.iotasupport.com").port("14265") //COMMAND not allowed - probably means it doesn't allow messages
//                 .protocol("http").host("cryptoiota.win").port("14265") //java.lang.IllegalAccessError: 500 While fdatasync: mainnetdb/192995.sst - probably means it doesn't allow messages
//                 .protocol("http").host("iotanode.farm").port("14265") //Failed to connect
//                 .protocol("https").host("node.tangle.works").port("443") //java.net.ConnectException: Failed to connect to node.tangle.works/
//                 .protocol("http").host("").port("14265") //java.lang.IllegalStateException: Failed to connect to /
//                 .protocol("http").host("").port("14265") //java.net.ConnectException: Failed to connect to /
//                 .protocol("http").host("").port("14265") //java.net.ConnectException: Failed to connect to /
//                 .protocol("http").host("").port("14265") //java.net.ConnectException: Failed to connect to /
//                 .protocol("http").host("").port("14265") //java.net.ConnectException: Failed to connect to /
//                 .protocol("http").host("tangle.hom3works.fr").port("14265") //worked, took 30 secs for this short msg, but fails for 677 byte msgs - failed java.io.IOException: unexpected end of stream on Connection{tangle.hom3works.fr:14265, proxy=DIRECT hostAddress=tangle.hom3works.fr/ cipherSuite=none protocol=http/1.1}
                 .protocol("http").host("radiantqs.de").port("14265") //worked once, took 2 minutes; other tests never returned
//                 .protocol("https").host("n1.iotajournal.io").port("443") //npe
//                 .protocol("https").host("whitey.whitey13.org").port("443") //npe
//                 .protocol("https").host("iota.xardas.org").port("443") //Connection refused
//                 .protocol("http").host("superiota-5.ga").port("14265") //Failed to connect
//                 .protocol("http").host("iota.neterra.net").port("14265") //This operations cannot be executed: The subtangle has not been updated yet.
//                 .protocol("https").host("iota-nod3.de").port("443") //npe


//    @Ignore
    public void shouldSendMessage() throws ArgumentException {
        List transfers = new ArrayList();

        // for each 2187 trytes in a message one transfer is necessary
        transfers.add(new Transfer(TEST_ADDRESS_WITH_CHECKSUM_SECURITY_LEVEL_2, 0, StringUtils.rightPad(TEST_MESSAGE, 2188, '9'), TEST_TAG));

        SendTransferResponse str = iotaClient.sendTransfer(TEST_SEED1, 2, DEPTH, MIN_WEIGHT_MAGNITUDE, transfers, null, null, false, false);
        System.out.println("str.getTransactions: " +str.getTransactions());
        System.out.println("str.getSuccessfully: " +Arrays.toString(str.getSuccessfully()));

        assertEquals(str.getTransactions().size(), 2);
        assertThat(str.getTransactions(), IsNull.notNullValue());
        assertThat(str.getSuccessfully(), IsNull.notNullValue());
  • Hi Bob, for a question like this, I would recommend asking in the #fullnodes channel of the community Discord. It will be much easier to debug with other full node operators in real time. – user482 Jul 25 '18 at 18:09
  • I'm sorry to be stupid, but what do you mean by "community Discord"? How do I get there? – BobC Jul 25 '18 at 19:17
  • Not stupid at all. Discord is just a chatroom app. Here is an invite link to the IOTA community one, you'll see many channels in there where developers can help answer any questions: discordapp.com/invite/fNGZXvh – user482 Jul 25 '18 at 20:05
  • Thanks for the link and invite. I have joined the IOTA Community on Discord, and have browsed some of the channels, such as #fullnodes. Before I add a message there similar to this topic I will study the existing messages - maybe my question is already answered. – BobC Jul 25 '18 at 23:45
  • 1
    I "@bobc" posted my question to Discord IOTA #fullnodes and user "@xardas" pointed me towards the field load balancer at field.carriota.com:443. I have tested the field lb for 24 hours and several 4000+ tryte messages and have been getting consistent 20 second responses. Although I did not get my question answered about why I was getting sporadic responses, I think using the field lb is the current solution for me. JOHN - Please turn your comment into a reply and I will select it as the answer. Thanks for your help! – BobC Jul 27 '18 at 0:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.