Troubleshoot instrument data pipelines
Use this guide to identify where a data pipeline is failing.
A useful first question is: Did the problem occur before FlaskTrack received the artifact, during parsing, or after the run was created?
Run the agent doctor command
On the laboratory machine:
This is the fastest way to verify authentication and local connector accessibility.
Agent cannot authenticate
Symptoms:
doctorfails before loading connectors;- configuration retrieval is rejected;
- the agent repeatedly reports authentication errors.
Check:
- the key begins with
ftia_; - the key belongs to the intended organization/agent;
- the key was not rotated in FlaskTrack;
- the agent was not revoked;
- the machine is using the expected config file;
FLASKTRACK_AGENT_KEYis not overriding the stored key with an old value.
If needed, rotate the key in FlaskTrack and update the host.
Agent shows zero connectors
Check that each connector is:
- enabled;
- assigned to this Instrument Agent;
- configured as Inbound or Bidirectional where ingestion is expected.
Remote connector configuration comes from FlaskTrack; changing agent.json will not assign a connector.
Watch path is not accessible
Check the exact path from the account that runs the agent daemon.
Linux/macOS:
Windows PowerShell:
Common causes:
- typo in the connector watch path;
- share not mounted;
- service account lacks permission;
- Windows mapped drive exists only for the interactive user;
- folder moved after connector setup;
- NAS unavailable.
Files exist but are not uploaded
Check:
- file pattern matches the filename;
- file is not still changing;
settle_secondshas elapsed;- file size does not exceed
max_file_bytes; - the file was not already recorded as successfully seen;
- the connector is enabled;
- the agent is still running.
Example pattern:
will not match an .xlsx result.
File remains in the source folder after success
This is normal when:
If you want successful source files archived, use an approved archive configuration.
Files are repeatedly uploaded
The agent maintains local file fingerprints, and FlaskTrack also applies server-side idempotency.
Repeated new ingestions may indicate that:
- the instrument rewrites the file after each scan;
- the filename is reused for changing data;
- the agent state directory was deleted or changed;
- multiple agents are monitoring the same connector/source;
- the connector assignment is incorrect.
Ingestion is Queued for too long
The artifact reached FlaskTrack, so the local agent path is probably working.
Investigate the FlaskTrack instrument processing worker and ingestion attempt history.
Ingestion is Failed
Open the ingestion and inspect its latest processing attempt.
Typical categories include:
- unsupported source format;
- parser configuration error;
- malformed input;
- parser/source mismatch;
- persistence failure;
- scientific field validation failure.
Do not repeatedly retry without understanding the error if the source or parser is unchanged.
Ingestion is Quarantined
A quarantined ingestion is intentionally held out of the normal processing queue.
Inspect the reason and source artifact before releasing it.
Ingestion says Mapping required
Parsing worked. Open the resulting Instrument Run and complete its position mappings.
Do not retry the ingestion merely because mappings are incomplete.
No Sample appears in mapping search
Check:
- you selected Sample as the mapping target type;
- the sample belongs to the same FlaskTrack organization;
- the sample is active/not deleted;
- your search text matches the sample name or supported identifier;
- the run is still in Parsed or Mapping required state.
Search is locked once review begins.
Wrong type cannot be mapped
This is intentional. A Batch UUID cannot be submitted as a Sample target, and a record from another organization cannot be used as a mapping target.
Select the correct mapping target type and search again.
Mapping controls are locked
Mappings are editable only while the run is Parsed or Mapping required.
They are locked in:
- Ready for review;
- Accepted;
- Rejected.
If a controlled run requires correction, follow your organization's correction/reprocessing procedure.
Submit for review is unavailable
Confirm all required positions are mapped. The run page shows mapped and remaining counts.
Opentrons Robot Server is unreachable
From the agent host, verify:
- correct robot address;
- port
31950in the connector Base URL where appropriate to your robot setup; - laboratory firewall/VLAN access;
- robot power/network state;
- the connector is assigned to the correct agent.
Do not expose the robot directly to the public internet to solve this problem.
Offline spool grows
A growing spool/ directory means the agent is staging data faster than it can successfully deliver it.
Check:
- FlaskTrack connectivity;
- DNS and TLS connectivity;
- server availability;
- agent authentication;
- server/API errors in
agent.log.
The spool is intended to protect data during temporary outages, not to be an unbounded permanent queue.
Dead-letter directory contains files
Permanent API rejections are retained under dead-letter/.
Investigate the accompanying metadata before removing anything. Correct the underlying connector, source, or server-side issue, then reintroduce the artifact through an approved process if necessary.
Useful agent commands
flasktrack-agent version
flasktrack-agent doctor --config ./agent.json
flasktrack-agent once --config ./agent.json
flasktrack-agent run --config ./agent.json
Information to collect for support
When escalating an issue, collect:
- FlaskTrack ingestion ID, if one exists;
- instrument name;
- connector name;
- agent name;
- agent version;
- operating system;
- source filename without confidential path information where possible;
- ingestion status;
- parser key and version;
- latest attempt error;
- relevant
agent.loglines with credentials removed.
Never include the ftia_... agent key.