MySQL SELECT blocking an INSERT?
The output is only showing the current query in a transaction.  What else is in the BEGIN...COMMIT?  Or are you running autocommit=0?  Or =1?

SELECT grabs shared locks on the rows it is looking at, for the duration of the transaction.

INSERT grabs exclusive lock(s).  It sounds like the SELECT already has a lock that the INSERT desires.

Perhaps the SELECT involves a table scan?

Note also that it says table metadata lock.  This is something 'bigger' than a "row lock".

If you have an 11-table JOIN that it taking 12 days, I suspect you are missing an index.  Or perhaps missing an ON clause, thereby turning a INNER JOIN into a very costly CROSS JOIN.  Please provide the EXPLAIN, the SELECT and SHOW CREATE TABLE if you would like us to dig deeper into this possibility.