JasperFx / marten

.NET Transactional Document DB and Event Store on PostgreSQL
https://martendb.io
MIT License
2.85k stars 450 forks source link

Marten commandline >= 6.2.0 ignores ShardTimeout flag when using one letter alias '-t' #2780

Closed StevenVerwerft closed 11 months ago

StevenVerwerft commented 11 months ago

Hi,

When rebuilding projections prior to Marten Commandline v6.2.0 we could use a flag -t to increase the shard timeout. After upgrading to 6.2.0 we noticed timeouts when rebuilding our projections, although we still used the same command with -t option. This might be related to the new TenantFlag option that has been introduced (suggested by Matthias Vdb in discord https://discord.com/channels/1074998995086225460/1074999076896112661/1173596686866726993).

I couldn't find a test in marten to easily reproduce this behaviour. But we can reproduce the issue when inserting an invalid value for ShardTimeout using both -t as --shard-timeout options: e.g. dotnet run -- projections -r -t invalid123 => this runs without issue

dotnet run -- projection -r --shard-timeout invalid123 => throws invalid shard timeout value exception

Kind regards, Steven

WilvanBil commented 11 months ago

Also have the same issue when trying to run projections through CLI. Sometimes we get a timeout exception eventhough we specified -t 999 timeout.

The full alias works though, so thank you for the workaround!

Jentonic commented 11 months ago

My team experiences the same issue. Our current workaround is downgrading to 6.1. Full alias seems to also work in the meantime.

mysticmind commented 11 months ago

Yes, the issue at hand is due to introduction of TenantFlag, Oakton by default uses the first letter as the short alias for argument. This results in a conflict between Tenant and the explicit flag defined for ShardTimeout. I will be making a change to remove the short alias t for ShardTimeout and make it only use the long alias --shard-timeout.