Skip to main content

Exit Codes

CodeMeaningAction
0SuccessNone
1License validation failedCheck license files and expiration
2Usage cap exceededCheck usage limits or upgrade license

Log Files

Each component writes to a log file specified by the logFile parameter in the orchestrator configuration. For migrations created through the Web Interface, logs are stored under the migration directory. Per-migration log structure:
/opt/wirekite/instance/<migration-name>/
├── schema/logs/
├── data/logs/
├── change/logs/
└── validate/logs/
UX Server logs:
/opt/wirekite/ux/logs/ux-server.log
/opt/wirekite/ux/logs/ux-server-error.log
Usage tracking:
/opt/wirekite/instance/usage.log
You can download all logs for a migration as a ZIP file through the Web Interface by opening the migration and clicking Download Logs.

License Issues

License Check Failed (Exit Code 1)

The orchestrator validates the license at startup. If validation fails, it prints an error and exits with code 1.
Error MessageCauseFix
failed to read license fileLicense file missing or unreadableVerify files exist at /opt/wirekite/license/ with mode 600
license file has been tampered withHMAC signature mismatchReinstall license with install-license.sh
License has expiredCurrent date is past the expiry dateContact your license provider for renewal
License issued date is in the futureSystem clock is set incorrectlyFix system clock with timedatectl or NTP
Host ID mismatchLicense is bound to a different machine’s MAC addressContact provider for a license matching this host
Diagnose with:
/opt/wirekite/license/license -cmd validate \
  -input /opt/wirekite/license/wirekite.license \
  -keyfile /opt/wirekite/license/wirekite.key

Usage Cap Exceeded (Exit Code 2)

Some licenses limit total bytes processed. When a cap is reached, the loader exits with code 2.
Error MessageCause
data migration limit exceededData load byte cap reached
CDC replication limit exceededChange replication byte cap reached
Check current usage through the Web Interface or contact your license provider to increase the cap.

Connection Issues

DSN File Errors

Error MessageCauseFix
failed to open DSN fileFile path is wrong or file doesn’t existVerify the path in your config
DSN file is empty or contains only commentsDSN file has no connection stringAdd the connection string to the file

Database Connection Failures

Error MessageCauseFix
failed to open MySQL connectionCannot connect to MySQLCheck host, port, credentials
failed to open PostgreSQL connectionCannot connect to PostgreSQLCheck host, port, credentials
failed to connect to SpannerSpanner connection failedVerify project ID, instance, and credentials
failed to execute test queryConnected but query failedCheck user permissions
Diagnosis steps:
  1. Test connectivity from the Wirekite host:
    nc -zv <host> <port>
    
  2. Test DNS resolution:
    nslookup <hostname>
    
  3. Use the Web Interface Test Connection button to validate credentials
  4. Run a test query with Wiretalk:
    wiretalk -dsn /path/to/dsn -sql "SELECT 1"
    

Data Migration Issues

Migration Stops Mid-Process

Symptoms: No new data arriving at target, logs show no recent activity. Diagnosis:
-- Check for incomplete operations on target
SELECT source, operation, mark, start_time, restarts
FROM wirekite.wirekite_progress
WHERE finish_time IS NULL
ORDER BY start_time DESC;
-- Check if the process is still running
ps aux | grep -E "extractor|loader|orchestrator"

-- Check disk space
df -h
Recovery: Restart the migration. Wirekite automatically resumes from the last saved position using the wirekite_progress table.

Duplicate Key Errors During Load

Cause: Table already has data from a previous partial load, and the loader is re-inserting rows. Recovery:
  1. Check if the file was already loaded:
    SELECT * FROM wirekite.wirekite_progress
    WHERE source = 'schema.table.0.dkt';
    
  2. If the record shows finish_time IS NOT NULL, the file completed successfully and should be skipped automatically. If the recovery table is missing the record, truncate the target table and reset:
    TRUNCATE TABLE target_schema.table_name;
    DELETE FROM wirekite.wirekite_progress
    WHERE target LIKE '%table_name%' AND operation = 'DL';
    

Schema Mismatch

Symptoms: Data load fails with type mismatch or column not found errors. Cause: Source schema changed after schema extraction, or type mappings are incompatible. Recovery:
  1. Re-run schema extraction to capture the latest source schema
  2. Verify type mappings in the generated SQL
  3. Regenerate and re-apply the create table SQL on the target

Out of Disk Space

Symptoms: File operations fail with no space left on device. Recovery:
  1. Free disk space (check /tmp, log directories, old data files)
  2. Enable removeFiles=true in the mover and loader to clean up processed files
  3. Restart the migration - it resumes from the recovery checkpoint

CDC/Replication Issues

MySQL

ErrorCauseFix
failed to get binlog positionBinary logging not enabled or binlog purgedEnable with SET GLOBAL binlog_format='ROW' and ensure log_bin=ON
failed to start replicationReplication user lacks permissionsGrant SELECT, REPLICATION SLAVE, REPLICATION CLIENT
failed to flush binary logsInsufficient privilegesGrant RELOAD privilege
Check binlog status:
SHOW VARIABLES LIKE 'log_bin';
SHOW MASTER STATUS;

PostgreSQL

ErrorCauseFix
failed to create replication slotmax_replication_slots reached or slot name in useIncrease max_replication_slots or drop unused slots
failed to drop replication slotSlot has an active consumerTerminate the consuming connection first
Replication slot does not existSlot was dropped or never createdRecreate the replication slot
Check replication status:
-- List all slots
SELECT slot_name, active, restart_lsn FROM pg_replication_slots;

-- Check WAL level
SHOW wal_level;  -- Must be 'logical'

-- Check replication lag
SELECT slot_name,
       pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn) AS lag_bytes
FROM pg_replication_slots;
Drop a stuck slot:
SELECT pg_drop_replication_slot('wirekite_replication_slot');

Oracle

ErrorCauseFix
LogMiner errorsSupplemental logging not enabledALTER DATABASE ADD SUPPLEMENTAL LOG DATA
Archive log errorsDatabase not in ARCHIVELOG modeSwitch to ARCHIVELOG mode

SQL Server

ErrorCauseFix
CDC not capturing changesCDC not enabled on database or tablesEnable CDC on the database and each table
Transaction log fullLog space exhaustedIncrease log file size or run log backup
Enable CDC:
-- Enable on database
EXEC sys.sp_cdc_enable_db;

-- Enable on table
EXEC sys.sp_cdc_enable_table
  @source_schema = 'dbo',
  @source_name = 'your_table',
  @role_name = NULL;

Cloud Staging Issues

S3/GCS Upload Failures

ErrorCauseFix
Upload errorCredentials invalid or expiredRefresh AWS/GCS credentials
InitGCSBucketInfo errBucket doesn’t exist or not accessibleVerify bucket name and IAM permissions
Diagnosis:
  • AWS: Verify credentials with aws sts get-caller-identity
  • GCS: Verify credentials with gcloud auth list
  • Check bucket access and write permissions
  • Verify the bucket region matches your configuration

Snowflake Stage Errors

Symptoms: PUT or COPY commands fail. Check:
  1. Verify warehouse is running and has available compute
  2. Check that the connection string specifies a valid warehouse
  3. Verify the user has USAGE on the warehouse and stage

Recovery Table Issues

wirekite_action must have 1 row in it

Cause: The wirekite_action table was accidentally emptied or has extra rows. Fix:
-- Check current state
SELECT * FROM wirekite.wirekite_action;

-- Reset to exactly one row
DELETE FROM wirekite.wirekite_action;
INSERT INTO wirekite.wirekite_action VALUES ('RUN');

High Restart Counts

If the restarts column in wirekite_progress shows high values for a file, the same operation is crashing repeatedly. Diagnosis:
SELECT source, operation, restarts, start_time
FROM wirekite.wirekite_progress
WHERE restarts > 3
ORDER BY restarts DESC;
Investigate the component logs for the specific file to find the root cause before restarting again.

UX Server Issues

Cannot Connect to UX Server

  1. Verify the service is running: sudo systemctl status wirekite-ux
  2. Check logs: tail -f /opt/wirekite/ux/logs/ux-server.log
  3. Ensure port 8443 is open: sudo lsof -i :8443
  4. Verify SSL certificates exist at /opt/wirekite/ux/server/certs/

Authentication Issues

  1. Clear browser cookies and retry
  2. Check users.json in the config directory
  3. Restart the UX server to clear all sessions: sudo systemctl restart wirekite-ux

Diagnostic Tools

Wiretalk

Run ad-hoc queries against any configured source or target to diagnose connectivity and data issues. See Wiretalk.

TableValidator

Validate data integrity between source and target after migration. See TableValidator.

Web Interface Diagnostics

The Web Interface provides:
  • Test Connection - Validate database credentials
  • Download Logs - ZIP archive of all migration logs
  • Real-time Progress - Monitor extraction and loading rates
  • Validation - Run data validation with configurable sample size

Pre-Migration Checklist

Before starting a migration, verify:
1

Connectivity

Test connections to both source and target databases.
2

License

Validate your license is current and has sufficient usage cap.
3

Disk Space

Ensure adequate space on the Wirekite host for data files.
4

Replication Prerequisites

If using CDC, enable the required replication features on the source (binlog for MySQL, logical WAL for PostgreSQL, supplemental logging for Oracle, CDC for SQL Server).
5

Permissions

Verify database users have the required privileges for extraction and loading.
6

Schema

Extract and review the schema before starting data migration.