hangum / TadpoleForDBTools

https://tadpolehub.com
538 stars 148 forks source link

pgbouncer를 통한 접속 문제 #934

Open kucuny opened 7 years ago

kucuny commented 7 years ago

안녕하세요. 내부에서 테스트를 위해 postgresql에 직접 붙는 방식이 아닌 pgbouncer 를 통해 Tadpole에서 DB 를 추가하고 커넥션 테스트를 하는데 아래와 같은 에러메시지와 함께 접속이 되지 않습니다. 다른 클라이언트에서는 정상적으로 접속되는 것으로 봐서는 Tadpole의 postgres jdbc 드라이버를 확인해 볼 필요가 있을 듯 합니다. :)

2016-11-08 04:45:17,898 ERROR - AbstractLoginComposite : checkDatabase DB Connecting... [url]jdbc:postgresql://{pgbouncer_url}:6543/{db_name}?&loginTimeout=30
com.hangum.tadpole.commons.exception.TadpoleSQLManagerException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ERROR: Unsupported startup parameter: extra_float_digits)
    at com.hangum.tadpole.engine.manager.TadpoleSQLManager.getInstance(TadpoleSQLManager.java:136)
    at com.hangum.tadpole.rdb.core.dialog.dbconnect.composite.AbstractLoginComposite.checkDatabase(AbstractLoginComposite.java:325)
    at com.hangum.tadpole.rdb.core.dialog.dbconnect.composite.AbstractLoginComposite.isValidateDatabase(AbstractLoginComposite.java:242)
    at com.hangum.tadpole.rdb.core.dialog.dbconnect.composite.AbstractLoginComposite.testConnection(AbstractLoginComposite.java:214)
    at com.hangum.tadpole.rdb.core.dialog.dbconnect.DBLoginDialog.buttonPressed(DBLoginDialog.java:281)
    at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:609)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:262)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
    at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1212)
    at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1193)
    at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1176)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1168)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:869)
    at org.eclipse.jface.window.Window.open(Window.java:845)
    at com.hangum.tadpole.rdb.core.actions.global.ConnectDatabaseAction.runConnectionDialog(ConnectDatabaseAction.java:74)
    at com.hangum.tadpole.rdb.core.actions.global.ConnectDatabaseAction.run(ConnectDatabaseAction.java:57)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:493)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:575)
    at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:492)
    at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:443)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:109)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:687)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:594)
    at org.eclipse.swt.widgets.Display.executeNextEvent(Display.java:1212)
    at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1193)
    at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1176)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1168)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
    at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
    at com.hangum.tadpole.application.Application.createUI(Application.java:49)
    at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
    at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:290)
    at java.lang.Thread.run(Thread.java:745)
    at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:107)
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (ERROR: Unsupported startup parameter: extra_float_digits)
    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
    at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
    at com.hangum.tadpole.engine.manager.TadpoleSQLManager.getInstance(TadpoleSQLManager.java:122)
    ... 40 more
Caused by: org.postgresql.util.PSQLException: ERROR: Unsupported startup parameter: extra_float_digits
    at org.postgresql.Driver$ConnectThread.getResult(Driver.java:357)
    at org.postgresql.Driver.connect(Driver.java:281)
    at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
    at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
    at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
    at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
    ... 43 more
hangum commented 7 years ago

안녕하세요.

테스트 해볼수 있는 환경이 없어서, 올려주신 로그에 Unsupported startup parameter: extra_float_digits 와 같은 구절로 검색을 해보는데요. https://community.hortonworks.com/questions/40139/sqoop-fails-with-unsupported-startup-parameter-ext.html

pgsql 드라이버를 사용자가 바꿀수가 있습니다. 시스템 어드민 으로 로그인하셔서요. 메뉴 -> 어드민 -> JDBC 드리이버 관리자 image

아래 화면에서 PostgreSQL을 선택하고 파일리스트에서 jar파일을 선택하고 삭제하신 후에 사용하시는 드라이버를 올려주십시오. image

드라이버를 올린 후에는 재시작해야 합니다. 감사합니다.

kucuny commented 7 years ago

postgres 최선버전의 JDBC 드라이버를 올려서 해도 동일하네요. 저희쪽 pgbouncer 설정에서 ignore 처리를 하고나서는 정상적으로 접속이 되는데 이 옵션을 끄지 말아야 할 경우도 생기니 시간되실 때 확인 부탁 드리겠습니다. 저도 여력이 있으면 같이 확인 하겠습니다.

https://www.postgresql.org/docs/9.0/static/datatype-numeric.html#DATATYPE-FLOAT

hangum commented 7 years ago

테드폴허브에서는 자바 드라이버를 사용하는데요. 홈페이지에 아래와 같은 내용이 있네요. https://pgbouncer.github.io/faq.html#how-to-use-prepared-statements-with-transaction-pooling prepareThreshold=0 를 설정하라고 하네요.

image

감사합니다.

kucuny commented 7 years ago

해당 옵션도 이미 진행을 해 봤는데 동일하게 접속이 되지 않았습니다. 제가 조금 더 확인해 보고 다시 리포팅 해 드리도록 하겠습니다. :)