extension-read-replicas
extension-read-replicas copied to clipboard
Read replica doesn't seem to work with PrismaNeon adapter
I want to incorporate using read replicas with PrismaNeon adapter. Here is the code I have
import "server-only";
import { env } from "@/env";
import { Pool } from "@neondatabase/serverless";
import { PrismaNeon } from "@prisma/adapter-neon";
import { PrismaClient } from "@prisma/client";
import { readReplicas } from "@prisma/extension-read-replicas";
const pool = new Pool({
connectionString: env.DATABASE_URL ?? process.env.DATABASE_URL,
});
const adapter = new PrismaNeon(pool);
const createPrismaClient = () => {
if (process.env.NODE_ENV === "development") {
return new PrismaClient();
}
if (env.DATABASE_URL_READ_REPLICA) {
console.log("prisma client with read replica");
return new PrismaClient({
adapter,
}).$extends(
readReplicas({
url: env.DATABASE_URL_READ_REPLICA,
}),
);
}
return new PrismaClient({
adapter,
});
};
const globalForPrisma = globalThis as unknown as {
prisma: ReturnType<typeof createPrismaClient> | undefined;
};
export const db = globalForPrisma.prisma ?? createPrismaClient();
if (env.NODE_ENV !== "production") {
globalForPrisma.prisma = db;
}
however, this doesn't seem to work (in practice read replica is never activated), most likely because of using PrismaNeon. Is this a bug or is it intentional? If so, the docs should probably be a bit more explicit about this. And how would one handle this case