david_wallace
02/04/2022, 11:06 PMdavid_wallace
02/04/2022, 11:06 PMmeltano elt
command:david_wallace
02/04/2022, 11:07 PM--dry
mode it tells me where meltano is expecting to find the executable at, and you can also see that the executables actually exist (and are owned by dagster) in the locations where they are expected to bedavid_wallace
02/04/2022, 11:08 PMmeltano elt
command meltano claims to not be able to locate themdavid_wallace
02/04/2022, 11:08 PMvisch
02/05/2022, 5:46 PMmeltano install
ran before this command?
Comes down to how you're running meltano, is it a container? If so how's the container setup? etc etcdavid_wallace
02/05/2022, 11:11 PMdavid_wallace
02/05/2022, 11:12 PMFROM base AS builder
RUN python -m venv "$VIRTUAL_ENV" && \
mkdir -p "$DAGSTER_HOME"
ENV PATH="$VIRTUAL_ENV/bin:$POETRY_HOME/bin:$PATH"
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN apt-get update && \
apt-get -y upgrade && \
apt-get install -y --no-install-recommends build-essential musl-dev g++ gcc git curl && \
apt-get -y clean && \
rm -rf /var/lib/apt/lists/* && \
curl -sSL <https://install.python-poetry.org> | python -
COPY poetry.lock pyproject.toml /
RUN pip install --no-cache-dir --upgrade pip==21.3.1 setuptools==60.2.0 wheel==0.37.1 && \
poetry config virtualenvs.path "$VIRTUAL_ENV" && \
poetry install --no-root --no-interaction --no-ansi --no-dev
COPY meltano.yml /
RUN meltano install
FROM base AS runner
ENV PATH="$VIRTUAL_ENV/bin:$POETRY_HOME/bin:$PATH"
ENV MELTANO_PROJECT_READONLY=true
RUN groupadd -r dagster && useradd -m -r -g dagster dagster
COPY --from=builder $VIRTUAL_ENV $VIRTUAL_ENV
COPY --from=builder --chown=dagster $DAGSTER_HOME $DAGSTER_HOME
WORKDIR $DAGSTER_HOME
FROM runner AS ucr
COPY --from=builder --chown=dagster /.meltano $DAGSTER_HOME/.meltano
COPY --from=builder --chown=dagster meltano.yml $DAGSTER_HOME/meltano.yml
COPY --chown=dagster logging.yaml $DAGSTER_HOME/logging.yaml
COPY --chown=dagster dutchie_dagster_meltano/ ./dutchie_dagster_meltano
USER dagster:dagster
EXPOSE 4000
CMD ["dagster", "api", "grpc", "-h", "0.0.0.0", "-p", "4000", "-m", "dutchie_dagster_meltano"]
david_wallace
02/05/2022, 11:13 PMvisch
02/06/2022, 2:12 AMmeltano install
run?visch
02/06/2022, 2:13 AMdavid_wallace
02/06/2022, 3:32 AMdavid_wallace
02/06/2022, 3:34 AMvisch
02/06/2022, 3:54 PMvisch
02/06/2022, 3:55 PMvisch
02/06/2022, 3:55 PMdavid_wallace
02/07/2022, 4:13 AMdavid_wallace
02/07/2022, 4:15 AMdavid_wallace
02/07/2022, 4:16 AMdavid_wallace
02/07/2022, 4:39 AMdagster@d982d5658b17:/opt/dagster/dagster_home$ meltano install
Installing 6 plugins...
Installing loader 'target-snowflake'...
Installing extractor 'tap-launch-darkly'...
Installing extractor 'tap-chargebee'...
Installing extractor 'tap-lessonly'...
Installing extractor 'tap-exchange-rates-api'...
Installing extractor 'tap-ocs'...
Installed extractor 'tap-exchange-rates-api'
Installed extractor 'tap-ocs'
Installed extractor 'tap-chargebee'
Installed extractor 'tap-lessonly'
Installed extractor 'tap-launch-darkly'
Installed loader 'target-snowflake'
Installed 6/6 plugins
dagster@d982d5658b17:/opt/dagster/dagster_home$ meltano elt tap-launch-darkly target-snowflake
{"name": "meltano", "run_id": "7db4c784-9b00-4208-b361-a6d517a7f87b", "job_id": "2022-02-07T043856--tap-launch-darkly--target-snowflake", "event": "Running extract & load...", "level": "info", "timestamp": "2022-02-07T04:38:57.208816Z"}
{"name": "meltano", "run_id": "7db4c784-9b00-4208-b361-a6d517a7f87b", "job_id": "2022-02-07T043856--tap-launch-darkly--target-snowflake", "stdio": "stderr", "cmd_type": "elt", "event": "ELT could not be completed: Cannot start extractor: Executable 'tap-launch-darkly' could not be found. Extractor 'tap-launch-darkly' may not have been installed yet using `meltano install extractor tap-launch-darkly`, or the executable name may be incorrect.", "level": "info", "timestamp": "2022-02-07T04:38:57.277360Z"}
{"name": "meltano", "run_id": "7db4c784-9b00-4208-b361-a6d517a7f87b", "job_id": "2022-02-07T043856--tap-launch-darkly--target-snowflake", "stdio": "stderr", "cmd_type": "elt", "event": "For more detailed log messages, check the generated log file '/opt/dagster/dagster_home/.meltano/logs/elt/2022-02-07T043856--tap-launch-darkly--target-snowflake/7db4c784-9b00-4208-b361-a6d517a7f87b/elt.log' or re-run the command using the '--log-level=debug' CLI flag.", "level": "info", "timestamp": "2022-02-07T04:38:57.277896Z"}
ELT could not be completed: Cannot start extractor: Executable 'tap-launch-darkly' could not be found. Extractor 'tap-launch-darkly' may not have been installed yet using `meltano install extractor tap-launch-darkly`, or the executable name may be incorrect.
For more detailed log messages, check the generated log file '/opt/dagster/dagster_home/.meltano/logs/elt/2022-02-07T043856--tap-launch-darkly--target-snowflake/7db4c784-9b00-4208-b361-a6d517a7f87b/elt.log' or re-run the command using the '--log-level=debug' CLI flag.
visch
02/07/2022, 1:23 PMtap-launch-darkly
cannot be found.
1. So I have to infer that tap-launch-darkly is a custom tap, correct?
2. Can we see the meltano.yml for the custom tap
All meltano does is try to run the extractor from the .meltano/extractors/venv/bin/* directory (Could be slightly off on dir names). In that directory is there a tap-launch-darkly
executable? Or is it named something else like maybe tap-launch
?visch
02/07/2022, 1:24 PMvisch
02/07/2022, 1:24 PMtaylor
02/07/2022, 3:38 PMmeltano.yml
would help debug a bit as well. Thanks @visch for diving in 💜david_wallace
02/07/2022, 4:31 PMdavid_wallace
02/07/2022, 4:31 PMdavid_wallace
02/07/2022, 4:33 PMmeltano elt --dry
says the executables are located, and what those executables interpreter directives are.taylor
02/08/2022, 3:05 PMdavid_wallace
02/08/2022, 4:10 PMdavid_wallace
02/09/2022, 11:53 PMmeltano elt
command in --dry
mode will seemingly output where exactly meltano expects the extractor/loader executables to be located. When I was running it in dry mode, I was seeing the following output:david_wallace
02/09/2022, 11:53 PMmeltano elt
command in non-dry mode, I was seeing the following error:david_wallace
02/09/2022, 11:53 PMdagster@997b6fea8440:/opt/dagster/dagster_home/.meltano/extractors/tap-launch-darkly/venv/bin$ cat tap-launch-darkly
#!/.meltano/extractors/tap-launch-darkly/venv/bin/python
# -*- coding: utf-8 -*-
import re
import sys
from tap_launch_darkly.tap import TapLaunchDarkly
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(TapLaunchDarkly.cli())
david_wallace
02/09/2022, 11:54 PMmeltano install
command was initially run.david_wallace
02/09/2022, 11:54 PM.meltano/
directory during image build that is created as a result of meltano install
to the dagster home directory, the issue is that meltano seems to hardcode the interpreter directives into the executables it creates, and those directives are based on where meltano install was runvisch
02/10/2022, 12:11 AM.meltano/
is meltano internals, touch at your own risk with little guarantees of backwards compatibility. Curious if the Meltano folks think that!
Moving those folders around (Especially things needed at runtime) after meltano install
has ran is asking for pain!david_wallace
02/10/2022, 12:11 AMvisch
02/10/2022, 12:11 AMvisch
02/10/2022, 12:11 AMdavid_wallace
02/10/2022, 12:12 AMdavid_wallace
02/10/2022, 12:12 AM.meltano
dirvisch
02/10/2022, 12:13 AMvisch
02/10/2022, 12:14 AMdavid_wallace
02/10/2022, 12:15 AMtaylor
02/10/2022, 4:04 PMedgar_ramirez_mondragon
02/10/2022, 4:28 PMpip
afaict. It hardcodes whatever the value of sys.executable
is when pip install
is called. I'm not sure if it can be a relative path or changed after the fact