ENOTFOUND redis.railway.internal
First time using railway.
I'm on team plan which says it supports private networking.
I have a simple nodejs application and a redis service.
I've shared the redis variables as per the guide.
project id is: 32ae1873-09b1-4c70-ae4b-ca9b93e854da
is something broken or am i missing something?
import Redis from "ioredis";
const redis = new Redis(process.env.REDIS_URL);
REDIS_URL is shared from the service as ${{Redis.REDIS_PRIVATE_URL}}
52 Replies
Project ID:
32ae1873-09b1-4c70-ae4b-ca9b93e854da
please have a look at this docs section for ioredis https://docs.railway.app/guides/private-networking#known-configuration-requirements-for-ipv6
i've updated to
const redis = new Redis(process.env.REDIS_URL + "?family=0");
i still have the same error.
does it matter that i started this project as hobby, where im told private networking doesn't work. and then imported things to team?nope, doesnt matter.
have you added a 3 second sleep to your start script?
lol no.
please try that
ok
i got dragged away for a meeting. this is still no go. even with the 3second delay.
nixpacks or dockerfile?
i just pushing up a project. looking at the build logs, its using nixpack, which is ubuntu based.
so i have a working nodejs application (locally). im just pushing it up to test railway. i usually use heroku.
to be clear, you get
ENOTFOUND redis.railway.internal
when deployed to railway right?yeah
can you show me how you have implemented the 3 second sleep?
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
await delay(3000);
just block. do this at the top before any dns lookups would happen
please add the sleep to your start script instead
oh so make my start script... sleep 3000; node index.js
3 maybe
that would sleep for 50 minutes, sleep 3 is what you want
ok its actually different now.
/app/node_modules/ioredis/built/Redis.js:332
command.reject(new Error(utils_1.CONNECTION_CLOSED_ERROR_MSG));
what version of ioredis are you using?
so do i need username and password for internal connection?
i currently am...
yes of course
"ioredis": "^5.3.2",
thats latest, so thats good
what is
REDIS_URL
set to?redis://default:[email protected]:6379
it should be set to
${{Redis.REDIS_PRIVATE_URL}}
const redis = new Redis(process.env.REDIS_URL + "?family=0");
yes it is...
${{Redis.REDIS_PRIVATE_URL}}
i expanded it
okay lets see your client code please
sure... here is the stacktrace.
please send the redis client code
well its actually not the ioredis this time... it might be a similar issue with bull. not sure if your familiar with this.
im just reading the docs here. it says everything in the second param is passed right to the iosredis constructor. https://github.com/OptimalBits/bull/blob/develop/REFERENCE.md#queue
GitHub
bull/REFERENCE.md at develop · OptimalBits/bull
Premium Queue package for handling distributed jobs and messages in NodeJS. - OptimalBits/bull
so im also instantiating a queue.
const fetchHTMLQueue = new Queue(
"fetchHTML",
process.env.REDIS_URL + "?family=0"
);
and now its breaking on .getJobs().
await redis.set("block:https://www.centrecom.com/test/product", "404");
let alreadyQueued = (await fetchHTMLQueue.getJobs(["active", "waiting"])).map(
(job) => job.data.url
);
okay I'll try to get a minimal reproducible example working with that library
does it break for you also?
I haven't started, currently eating dinner
what country? im from Aus
Canada
Nice!
looks like there is a bug in bull, i think i got it sorted
what was it?
so when you initilise a queue with bull, and pass in a redis connection string. it uses a url parser to pull it apart and then passes this to ioredis constructor
Solution
ioredis constructor expects family to be 0 no '0'
TypeError [ERR_INVALID_ARG_VALUE]: The property 'options.family' must be one of: 0, 4, 6. Received '0'
ah it wants it to be a number
anyhow... still not out of the woods. more issues. with redis. but ill have more of a play till i bother you again. but is definilty not the "point and click" i was expecting
yeah very odd that ioredis defaults to ipv4
ok so i have all this working now... thanks fro your help.
do i need to stay on the team for private networking to work? or will my nodejs still be able to connect to redis on hobby?
private networking is not limited to pro, but depending on your workload, you may need to stay on pro anyway
when i do
railway up
, at what point can i kill that and it will still deploy?after its done uploading, you may be interested in the
--detach
flag
yeah ok ill do -d
is there any ETA's for sydney/melbourne regions?
nope, but you upvote this forum post and with enough upvotes it will show the team that there is need for that region
https://help.railway.app/feature-request/australia-region-4d98acbd
done
i'd say that needs a bit more circulation
you are welcome to circulate it in a non intrusive way