Conduit setup on existing nodes fail

Hi,
I have a 2.x algorand and algorand-indexer setup that I switched to 3.x to algorand, conduit and indexer, but conduit is not working. The following configuration example is from my mainnet node and is using the same DB as before the indexer is using.

Algorand config.json

{
  "Version": 13,
  "AccountsRebuildSynchronousMode": 1,
  "AnnounceParticipationKey": true,
  "Archival": true,
  "BaseLoggerDebugLevel": 4,
  "BroadcastConnectionsLimit": -1,
  "CadaverSizeTarget": 1073741824,
  "CatchpointFileHistoryLength": 365,
  "CatchpointInterval": 10000,
  "CatchpointTracking": 0,
  "CatchupBlockDownloadRetryAttempts": 1000,
  "CatchupFailurePeerRefreshRate": 10,
  "CatchupGossipBlockFetchTimeoutSec": 4,
  "CatchupHTTPBlockFetchTimeoutSec": 4,
  "CatchupLedgerDownloadRetryAttempts": 50,
  "CatchupParallelBlocks": 16,
  "ConnectionsRateLimitingCount": 60,
  "ConnectionsRateLimitingWindowSeconds": 1,
  "DNSBootstrapID": "<network>.algorand.network",
  "DNSSecurityFlags": 1,
  "DeadlockDetection": 0,
  "DisableOutgoingConnectionThrottling": false,
  "EnableAgreementReporting": false,
  "EnableAgreementTimeMetrics": false,
  "EnableAssembleStats": false,
  "EnableBlockService": false,
  "EnableDeveloperAPI": true,
  "EnableGossipBlockService": true,
  "EnableIncomingMessageFilter": false,
  "EnableLedgerService": false,
  "EnableMetricReporting": false,
  "EnableOutgoingNetworkMessageFiltering": true,
  "EnablePingHandler": true,
  "EnableProcessBlockStats": false,
  "EnableProfiler": false,
  "EnableRequestLogger": false,
  "EnableTopAccountsReporting": false,
  "EndpointAddress": "10.103.10.29:13234",
  "FallbackDNSResolverAddress": "",
  "ForceRelayMessages": false,
  "GossipFanout": 4,
  "IncomingConnectionsLimit": 10000,
  "IncomingMessageFilterBucketCount": 5,
  "IncomingMessageFilterBucketSize": 512,
  "IsIndexerActive": true,
  "LedgerSynchronousMode": 2,
  "LogArchiveMaxAge": "",
  "LogArchiveName": "node.archive.log",
  "LogSizeLimit": 1073741824,
  "MaxCatchpointDownloadDuration": 7200000000000,
  "MaxConnectionsPerIP": 30,
  "MinCatchpointFileDownloadBytesPerSecond": 20480,
  "NetAddress": "",
  "NetworkMessageTraceServer": "",
  "NetworkProtocolVersion": "",
  "NodeExporterListenAddress": ":9100",
  "NodeExporterPath": "./node_exporter",
  "OptimizeAccountsDatabaseOnStartup": false,
  "OutgoingMessageFilterBucketCount": 3,
  "OutgoingMessageFilterBucketSize": 128,
  "PeerConnectionsUpdateInterval": 3600,
  "PeerPingPeriodSeconds": 0,
  "PriorityPeers": {},
  "PublicAddress": "",
  "ReconnectTime": 60000000000,
  "ReservedFDs": 256,
  "RestReadTimeoutSeconds": 15,
  "RestWriteTimeoutSeconds": 120,
  "RunHosted": false,
  "SuggestedFeeBlockHistory": 3,
  "SuggestedFeeSlidingWindowSize": 50,
  "TLSCertFile": "",
  "TLSKeyFile": "",
  "TelemetryToLog": false,
  "TxPoolExponentialIncreaseFactor": 2,
  "TxPoolSize": 15000,
  "TxSyncIntervalSeconds": 60,
  "TxSyncServeResponseSize": 1000000,
  "TxSyncTimeoutSeconds": 30,
  "UseXForwardedForAddressField": "",
  "VerifiedTranscationsCacheSize": 30000,
  "MaxAcctLookback": 16,
  "EnableFollowMode": false
}

and conduit.yml for conduit configuration

# Log verbosity: PANIC, FATAL, ERROR, WARN, INFO, DEBUG, TRACE
log-level: INFO

# If no log file is provided logs are written to stdout.
#log-file:

# Number of retries to perform after a pipeline plugin error.
# Set to 0 to retry forever.
retry-count: 10

# Time duration to wait between retry attempts.
retry-delay: "1s"

# Optional filepath to use for pidfile.
#pid-filepath: /path/to/pidfile

# Whether or not to print the conduit banner on startup.
hide-banner: true

# When the address is not empty information is available on '/health'
api:
    addr: "127.0.0.1:8981"

# When enabled prometheus metrics are available on '/metrics'
metrics:
    mode: OFF
    addr: ":9999"
    prefix: "conduit"

# The importer is typically an algod follower node.
importer:
    name: algod
    config:
        # The mode of operation, either "archival" or "follower".
        # * follower mode allows you to use a lightweight non-archival node as the
        #   data source. In addition, it will provide ledger state delta objects to
        #   the processors and exporter.
        # * archival mode allows you to start processing on any round but does not
        #   contain the ledger state delta objects required for the postgres writer.
        mode: "follower"

        # Algod API address.
        netaddr: "http://:13234"

        # Algod API token. Found in the algod.token file.
        token: "SECURE"

        # Algod catchpoint catchup arguments
        catchup-config:
            # Algod Admin API Token. Used for running fast catchup during startup
            # if the node needs to be initialized. Found in algod.admin.token file.
            admin-token: "SECURE"


# Zero or more processors may be defined to manipulate what data
# reaches the exporter.
processors:

# An exporter is defined to do something with the data.
exporter:
    name: postgresql
    config:
        # Pgsql connection string
        # See https://github.com/jackc/pgconn for more details
        connection-string: "host=127.0.0.1 port=5432 user=algorand_indexer password=SECURE dbname=algorand_indexer_db"

        # Maximum connection number for connection pool
        # This means the total number of active queries that can be running
        # concurrently can never be more than this
        max-conn: 20

        # The delete task prunes old transactions according to its configuration.
        # By default transactions are not deleted.
        delete-task:
            # Interval used to prune the data. The values can be -1 to run at startup,
            # 0 to disable, or N to run every N rounds.
            interval: 100

            # Rounds to keep
            rounds: 100000

I leave the indexer configuration out, because conduit seems to be the problem. The error I am getting from conduit is:

Jan 22 09:09:19 algorand-1 systemd[1]: Started "Algorand Conduit".
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Starting Conduit Conduit 1.6.0 (ec0d35a)","time":"2024-01-22T09:09:19.233849066Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Using data directory: /var/lib/algorand-conduit","time":"2024-01-22T09:09:19.233932757Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Conduit configuration is valid","time":"2024-01-22T09:09:19.233951627Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: Writing logs to console.
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Found Importer: algod","time":"2024-01-22T09:09:19.233966698Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Found Exporter: postgresql","time":"2024-01-22T09:09:19.233975708Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Starting Pipeline Initialization","time":"2024-01-22T09:09:19.233984108Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Checking for round override","time":"2024-01-22T09:09:19.234124392Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"Conduit","_name":"main","level":"info","msg":"Initializing to pipeline round 35275315.","time":"2024-01-22T09:09:19.240337037Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"importer","_name":"algod","level":"info","msg":"State Delta for round 35275315 is unavailable on the configured node. Fast catchup is requested. API Response: HTTP 404: {\"message\":\"failed retrieving State Delta: round 35275315 before dbRound 35433531\"}\n","time":"2024-01-22T09:09:19.241998018Z"}
Jan 22 09:09:19 algorand-1 conduit[3099]: {"__type":"importer","_name":"algod","level":"info","msg":"Catchup required to reach round 35275315","time":"2024-01-22T09:09:19.242052179Z"}
Jan 22 09:09:20 algorand-1 conduit[3099]: {"__type":"importer","_name":"algod","level":"info","msg":"Catchup required, node round ahead of target round. Node round 35433548, target round 35275315, catchpoint round 35270000.","time":"2024-01-22T09:09:20.332713972Z"}
Jan 22 09:09:20 algorand-1 conduit[3099]: {"__type":"importer","_name":"algod","level":"info","msg":"Starting catchpoint catchup with label 35270000#3CVGHIUHPF7DRLBPKG7B36V4RALHRWP5R3ABFXDPOITFQGYE3AEQ","time":"2024-01-22T09:09:20.332764543Z"}
Jan 22 09:09:20 algorand-1 conduit[3099]: Exiting with error:        pipeline init error: Pipeline.Init(): could not initialize importer (algod): POST /v2/catchup/35270000#3CVGHIUHPF7DRLBPKG7B36V4RALHRWP5R3ABFXDPOITFQGYE3AEQ received unexpected error: HTTP 500: {"message":"failed to start catchup : catching up using a catchpoint is not supported on archive nodes"}

I tried to remove the admin.token, but that results just into

Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Starting Conduit Conduit 1.6.0 (ec0d35a)","time":"2024-01-22T09:10:28.733497127Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Using data directory: /var/lib/algorand-conduit","time":"2024-01-22T09:10:28.733579969Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Conduit configuration is valid","time":"2024-01-22T09:10:28.733592229Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: Writing logs to console.
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Found Importer: algod","time":"2024-01-22T09:10:28.733602199Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Found Exporter: postgresql","time":"2024-01-22T09:10:28.73360899Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Starting Pipeline Initialization","time":"2024-01-22T09:10:28.73361521Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Checking for round override","time":"2024-01-22T09:10:28.733799365Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"Conduit","_name":"main","level":"info","msg":"Initializing to pipeline round 35275315.","time":"2024-01-22T09:10:28.740219365Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"importer","_name":"algod","level":"info","msg":"State Delta for round 35275315 is unavailable on the configured node. Fast catchup is requested. API Response: HTTP 404: {\"message\":\"failed retrieving State Delta: round 35275315 before dbRound 35433555\"}\n","time":"2024-01-22T09:10:28.741689641Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: {"__type":"importer","_name":"algod","level":"info","msg":"Catchup required to reach round 35275315","time":"2024-01-22T09:10:28.741721983Z"}
Jan 22 09:10:28 algorand-1 conduit[3138]: Exiting with error:        pipeline init error: Pipeline.Init(): could not initialize importer (algod): received unexpected error setting sync round (35275315): HTTP 404: {"message":"Not Found"}

What I am missing here that conduit is processing the blocks?

Thanks,
bert

1 Like

Hi, I have the same problem. Have you been able to find a solution?

Unfortunately I have not found a solution yet.