nick_hamlin
08/22/2022, 6:07 PMmeltano.yml, run a meltano elt to make sure things load properly, then add it to the scheduled meltano elt command in prod that corresponds to our desired scheduling for updates to the new table. We’re using airflow with directly configured jobs to run these commands (each with a different state_id to distinguish them).
This all works fine, so I let it run for a few days. Then I noticed that jobs being triggered by airflow were running fine, but not actually updating the table. Further investigation revealed that the new table had not gotten added to the job’s state JSON, which seemed odd. Grepping in the corresponding tap.properties.json also indicated that new table wasn’t listed there either.
I know that running meltano etl should automatically trigger discovery and updating of tap.properties.json but somehow that doesn’t seem to be happening here? More oddly, everything continues to work just fine when I spin up a local version of the stack (via docker compose) and run the exact same command.
There’s gotta be something different about production that’s not updating the tap properties correctly, but I can’t think of what it might be. Has anyone else ever run into this kind of thing or have any ideas?nick_hamlin
08/22/2022, 6:09 PMnick_hamlin
08/22/2022, 6:10 PMtap.properties.jsonnick_hamlin
08/22/2022, 6:11 PMchristoph
08/22/2022, 11:00 PMnick_hamlin
08/23/2022, 12:27 AMnick_hamlin
08/23/2022, 12:48 AM.meltano/cache, but I’m not seeing them in there. I suspect this is because we’re running meltano elt in discovery mode (that is, I’ve not ever needed to pre-generate catalogs as part of a separate step - I’m almost positive meltano is making them on the fly)nick_hamlin
08/23/2022, 12:49 AMnick_hamlin
08/23/2022, 12:50 AMnick_hamlin
08/23/2022, 12:51 AMnick_hamlin
08/23/2022, 1:08 AMnick_hamlin
08/23/2022, 9:22 PMmeltano install is the command you’re using to reinstall the taps when you ran into this before?nick_hamlin
08/23/2022, 9:23 PMchristoph
08/23/2022, 10:35 PMam I correct in thinking thatYup. That's how I currently wipe the cached catalog for any tap that might dynamically change its streams in the catalog based on changes in the source.is the command you’re using to reinstall the taps when you ran into this before?meltano install
christoph
08/23/2022, 10:37 PMmeltano install --clean thereby forcing a reinstall of an existing tapnick_hamlin
08/23/2022, 10:37 PMchristoph
08/23/2022, 10:42 PMnick_hamlin
08/23/2022, 11:02 PMnick_hamlin
08/23/2022, 11:03 PMchristoph
08/24/2022, 2:05 AMpipelinewise-tap-mysql, but it's a forkI'm using that myself and actually have found it to be very reliable. I'll try and do a reproduction of the catalog caching issue using that tap ...
douwe_maan
08/29/2022, 7:13 PMmeltano select tap-mysql --list inside the container? Or meltano select tap-mysql --list --all?nick_hamlin
08/29/2022, 7:51 PMdiscovery.yml described here: https://meltano.slack.com/archives/C01TCRBBJD7/p1659995696908979
2. Running that command on our meltano image running on a local docker stack returns results that include the new table I’ve been trying to add. This is what I’d have expected, since I’m able to load results into it when running locally.
3. Running that command on the same image running in prod does NOT return results for the new table (which sorta also makes sense since that’s where it’s not working). What’s mystifying to me is why those two would be different when they’re using the same image. That implies to me that is has something to do with data stored in the underlying meltano database, since (I think?) that’s the only thing that’s capable of persisting data and is different between the two?nick_hamlin
08/29/2022, 7:54 PMruns table for the job that should run it (this is presumably leftover from my earlier troubleshooting attempts where I manually added it in there)douwe_maan
08/29/2022, 8:04 PMmeltano select tap-mysql --list --all doesn’t include the new table, does meltano invoke tap-mysql --discover have it? That just runs discovery mode directly, skipping any possible cachingnick_hamlin
08/29/2022, 8:07 PMnick_hamlin
08/31/2022, 4:57 PMmeltano select and meltano elt commands didn’t totally fail, but instead silently skipped over the new table. Similarly, the catalog wasn’t getting updated to include the new table because that table wasn’t being returned during discovery.
Fortunately, the easy fix here is to tweak those permissions and now everything runs just fine! It does make me wonder if there might be an opportunity for meltano to return more expressive errors in the future in situations where a data source is indicated in meltano.yml but for which the user doesn’t actually have access permissions? Happy to share more details/ideas if helpful on that front. In the meantime, many thanks to everyone who has weighed in on this thread with support!nick_hamlin
08/31/2022, 4:57 PMdouwe_maan
08/31/2022, 6:11 PMnick_hamlin
08/31/2022, 6:11 PMchristoph
08/31/2022, 9:54 PMIt does make me wonder if there might be an opportunity for meltano to
return more expressive errors in the future in situations where a data
source is indicated inIt certainly sounds like an interesting feature. Especially as the behaviour you experienced probably violates the principle of least surprise.but for which the user doesn’t actually have access permissions?meltano.yml
douwe_maan
08/31/2022, 9:58 PMwhere a data source is indicated inDoes this mean that you had the table explicitly listed in thebut for which the user doesn’t actually have access permissions?meltano.yml
select rule, not just as *.*? I think it’d make sense to warn the user “this rule didn’t match any streams, make sure you don’t have a typo or that the stream exists (or you have access)nick_hamlin
08/31/2022, 10:16 PMdatabase-table.*)nick_hamlin
09/01/2022, 2:48 AM