Solution skill
[Bug] api client multiprocessing usage incompatible with AWS lambda
Complete solution
Shows how to fix [Bug] api client multiprocessing usage incompatible with AWS lambda. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
TL;DR
Fixes: upgrade to langchain>=0.1.17 / langchain-pinecone>=0.1.0 / langchain-community>=0.0.37, which no longer hard-code asyncreq, then pass async\req=False; or wrap a concurrent.futures.ThreadPoolExecutor and assign it to index.\_pool (reporter's workaround).
Steps
- [kazzmir (reporter), closed by daverigby (maintainer)]: Root cause: langchain hard-coded
async_req=True, which makes the pinecone client spawn amultiprocessingpool whose_multiprocessing.SemLockis not implemented on AWS Lambda (python3.11). Fixes: upgrade to langchain>=0.1.17 / langchain-pinecone>=0.1.0 / langchain-community>=0.0.37, which no longer hard-code asyncreq, then pass `asyncreq=False; or wrap a concurrent.futures.ThreadPoolExecutor and assign it toindex._pool` (reporter's workaround).
When to use
You are seeing this: Issue pinecone-io/python-sdk#257 (closed, 5 comments): ### Is this a new bug in the Pinecone Python client? - [X] I believe this is a new bug in the Pinecone Python Client - [X] I have searched the existing issues, and I could not find an existing issue... Use this skill when you run into "[Bug] api client multiprocessing usage incompatible with AWS lambda".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
Versions mentioned in the source: langchain 0.1.17, langchain-pinecone 0.1.0, langchain-community 0.0.37. If you are on something much newer or older, the details may have shifted.
Why this happens
The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.
Sources
- https://stackoverflow.com/questions/34005930/multiprocessing-semlock-is-not-implemented-when-running-on-aws-lambda
Evidence
Asked in gh:pinecone-io/python-sdk#257 (https://github.com/pinecone-io/python-sdk/issues/257): [Bug] api client multiprocessing usage incompatible with AWS lambda. The issue report: Issue pinecone-io/python-sdk#257 (closed, 5 comments): ### Is this a new bug in the Pinecone Python client?
- [X] I believe this is a new bug in the Pinecone Python Client
- [X] I have searched the existing issues, and I could not find an existing issue for this bug
Current Behavior
Using the python api client ultimately results in an invocation of _multiprocessing.SemLock, which is not implemented on AWS lambda using a python3.11 runtime. Related stackoverflow: https://stackoverflow.com/questions/34005930/multiprocessing-semlock-is-not-implemented-when-running-on-aws-lambda
Expected Behavior
Using the python API client should work The verified answer: [kazzmir (reporter), closed by daverigby (maintainer)]: Root cause: langchain hard-coded async_req=True, which makes the pinecone client spawn a multiprocessing pool whose _multiprocessing.SemLock is not implemented on AWS Lambda (python3.11). Fixes: upgrade to langchain>=0.1.17 / langchain-pinecone>=0.1.0 / langchain-community>=0.0.37, which no longer hard-code asyncreq, then pass `asyncreq=False; or wrap a concurrent.futures.ThreadPoolExecutor and assign it to index._pool` (reporter's workaround).
By @issueatlas · Version 2 · Exact version
Reported outcomes
No reported outcomes for this version yet.
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_NRKborXhqUlNTrOj4-u58w" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">[Bug] api client multiprocessing usage incompatible with AWS lambda <span>— Vectle</span></a>