> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting a Maia runner for Snowflake

export const m_runner = "Maia runner";

export const maia = "Maia";

export const RunnerMetadata = ({runnerType, platforms = []}) => {
  return <div style={{
    background: 'var(--colors-background-light, #f9fafb)',
    border: '1px solid var(--colors-border-default, #e5e7eb)',
    borderRadius: '12px',
    padding: '20px 28px',
    marginBottom: '28px'
  }}>
      <table style={{
    width: '100%',
    borderCollapse: 'collapse'
  }}>
        <tbody>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    paddingBottom: '14px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle',
    width: '180px'
  }}>Runner type</td>
            <td style={{
    paddingBottom: '14px',
    verticalAlign: 'middle'
  }}>{runnerType}</td>
          </tr>
          <tr>
            <td style={{
    fontWeight: '600',
    paddingRight: '32px',
    whiteSpace: 'nowrap',
    verticalAlign: 'middle'
  }}>Runner platform</td>
            <td style={{
    verticalAlign: 'middle'
  }}>
              <div style={{
    display: 'flex',
    flexWrap: 'wrap',
    gap: '8px'
  }}>
                {platforms.map((platform, i) => <span key={i} style={{
    background: '#dcfce7',
    color: '#15803d',
    border: '1px solid #bbf7d0',
    borderRadius: '9999px',
    padding: '3px 12px',
    fontSize: '0.85rem',
    fontWeight: '500',
    whiteSpace: 'nowrap'
  }}>
                    {platform} ✅
                  </span>)}
              </div>
            </td>
          </tr>
        </tbody>
      </table>
    </div>;
};

<RunnerMetadata runnerType={`${maia} Hybrid`} platforms={["Snowflake"]} />

This article contains fixes and recommendations for some common problems encountered when installing and using the Matillion {m_runner} for Snowflake.

***

## Maia runner status hasn't changed to READY

If your {m_runner} status remains in **PENDING** or some other state and doesn't change to **READY**, you can inspect the logs of the {m_runner} to determine the probable cause. To inspect the logs:

1. Open the app.
2. Click the **App events** tab.
3. Click **View logs**.
4. Run the following query:

   ```
   SELECT
       TIMESTAMP as time,
       COALESCE(TRY_PARSE_JSON(VALUE), VALUE) AS LOG
   FROM
       <EVENTS_TABLE>
   WHERE RESOURCE_ATTRIBUTES['snow.application.name'] = '<APPLICATION_NAME>' or
       RESOURCE_ATTRIBUTES['snow.database.name'] = '<APPLICATION_NAME>'
   ORDER BY time desc
   ```

Running this query will give you the latest logs for the {m_runner}, which you can examine to determine the cause of the problem.

<Note>
  * To view logs, you will need to configure an event table in the Snowflake environment. Read [Event table overview](https://docs.snowflake.com/en/developer-guide/logging-tracing/event-table-setting-up) for details.
  * You may need to run the query as an **ACCOUNTADMIN**.
</Note>

***

## What Maia runner version is running?

You may need to know what version of the {m_runner} you are running, for example to pass diagnostic information to Matillion Support. To determine the {m_runner} version:

1. Open the app.
2. Click the **Privileges** tab.
3. This tab displays two numbers separated by a dash. The {m_runner} version is the second number, after the dash. For example, if the tab displays `1.0.20-10.983.0` then the {m_runner} version is `10.983.0`.

***

## Some pipelines aren't running

If the {m_runner} is started and running correctly but some of your {maia} pipelines fail to run, the issue may be with specific components in those pipelines that need to communicate on non-standard ports.

To resolve this issue, you will need to open additonal ports, as described [below](#how-to-open-more-ports).

***

## How to open more ports

To open up additional ports, you will need to alter the network rule [created by the application](/docs/guides/snowflake-runner-install#configure-the-application), which by default only allows access to ports `80` and `443`. You must make these changes using the same role that installed the application.

The network rule created by the application will follow this naming convention:

```
<APPLICATION_NAME>_APP_DATA.CONFIGURATION.<APPLICATION_NAME>_ALL_EXTERNAL_ACCESS_NETWORK_RULE
```

The default `<APPLICATION_NAME>` is `MATILLION_DATA_PRODUCTIVITY_CLOUD` which means the network rule will be:

```
MATILLION_DATA_PRODUCTIVITY_CLOUD_APP_DATA.CONFIGURATION.MATILLION_DATA_PRODUCTIVITY_CLOUD_ALL_EXTERNAL_ACCESS_NETWORK_RULE
```

Log in to Snowsight and use the role created for the native application. Note that if this role is not assigned to a user, you may need to complete this action by running the following:

```sql theme={null}
GRANT ROLE <ROLE_NAME> TO USER "<USER_NAME>";
```

After assuming the role, run the following query to update the network rule:

```sql theme={null}
ALTER NETWORK RULE MATILLION_DATA_PRODUCTIVITY_CLOUD_APP_DATA.CONFIGURATION.MATILLION_DATA_PRODUCTIVITY_CLOUD_ALL_EXTERNAL_ACCESS_NETWORK_RULE
SET VALUE_LIST = (
'0.0.0.0:443', -- these existing values should not be changed
'0.0.0.0:80', -- these existing values should not be changed
'<SOME_HOST>:<SOME_PORT>');
```

Where `<SOME_HOST>:<SOME_PORT>` are the new host IP address and network port that you want to open. To open multiple ports, supply a comma-separated list of values in the query.

The rule update is applied immediately, and any pipeline component requiring the bespoke `host:port` combination should now start working.

<Warning>
  The following ports are currently not supported:

  * `20` (FTP)
  * `465` (SMTP)
  * `445` (SMB)
</Warning>
