Patch to remove connection hook and JDK 1.3 dependencies

Started by Barry Lindabout 25 years ago12 messagespatches
Jump to latest
#1Barry Lind
barry@xythos.com

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

thanks,
--Barry

PS. In addition to the diffs in this patch, the file
src/interfaces/jdbc/org/postgresql/core/ConnectionHook.java is obsoleted
and needs to be removed from 7.2, but of course the file is still needed
for 7.1 builds.

Attachments:

patch.difftext/plain; name=patch.diffDownload+0-10
#2Bruce Momjian
bruce@momjian.us
In reply to: Barry Lind (#1)
Re: Patch to remove connection hook and JDK 1.3 dependencies

Your patch has been added to the PostgreSQL unapplied patches list at:

http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

thanks,
--Barry

PS. In addition to the diffs in this patch, the file
src/interfaces/jdbc/org/postgresql/core/ConnectionHook.java is obsoleted
and needs to be removed from 7.2, but of course the file is still needed
for 7.1 builds.

*** ./interfaces/jdbc/build.xml.orig	Fri Jun 29 19:06:30 2001
--- ./interfaces/jdbc/build.xml	Fri Jun 29 19:09:20 2001
***************
*** 37,43 ****
-->
<target name="check_versions">
<available property="jdk1.2+" classname="java.lang.ThreadLocal" />
-     <available property="jdk1.3+" classname="java.lang.StrictMath" />
<available property="jdk1.2e+" classname="javax.sql.DataSource" />
<available property="junit" classname="junit.framework.Test" />
</target>
--- 37,42 ----
***************
*** 58,68 ****
<property name="connectclass" value="org.postgresql.jdbc1.Connection" />
<available property="connectclass" value="org.postgresql.jdbc2.Connection" classname="java.lang.ThreadLocal" />
-     <!-- comment out 1.3+ stuff -->
-     <property name="jdk13only" value="//" />
-     <available property="jdk13only" value="" classname="java.lang.StrictMath" />
-     <filter token="JDK1.3ONLY" value="${jdk13only}" />
- 
<!-- Some defaults -->
<filter token="MAJORVERSION" value="${major}" />
<filter token="MINORVERSION" value="${minor}" />
--- 57,62 ----
***************
*** 104,110 ****
<target name="compile" depends="prepare,check_versions,driver">
<javac srcdir="${src}" destdir="${dest}">
<include name="${package}/**" />
-       <exclude name="${package}/core/ConnectionHook.java" unless="jdk1.3+" />
<exclude name="${package}/jdbc1/**" if="jdk1.2+" />
<exclude name="${package}/jdbc2/**" unless="jdk1.2+" />
<exclude name="${package}/largeobject/PGblob.java" unless="jdk1.2+" />
--- 98,103 ----
*** ./interfaces/jdbc/org/postgresql/Driver.java.in.orig	Fri Jun 29 19:13:40 2001
--- ./interfaces/jdbc/org/postgresql/Driver.java.in	Fri Jun 29 19:16:58 2001
***************
*** 36,44 ****
// Placing it here, means that the driver is registered once only.
java.sql.DriverManager.registerDriver(new Driver());
-       // New in 7.1 - register ourselves with the JVM - JDK1.3+ only
-       @JDK1.3ONLY@org.postgresql.core.ConnectionHook.init();
- 
} catch (SQLException e) {
e.printStackTrace();
}
--- 36,41 ----

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#3Bruce Momjian
bruce@momjian.us
In reply to: Barry Lind (#1)
Re: Patch to remove connection hook and JDK 1.3 dependencies

Patch applied. Thanks.

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

thanks,
--Barry

PS. In addition to the diffs in this patch, the file
src/interfaces/jdbc/org/postgresql/core/ConnectionHook.java is obsoleted
and needs to be removed from 7.2, but of course the file is still needed
for 7.1 builds.

*** ./interfaces/jdbc/build.xml.orig	Fri Jun 29 19:06:30 2001
--- ./interfaces/jdbc/build.xml	Fri Jun 29 19:09:20 2001
***************
*** 37,43 ****
-->
<target name="check_versions">
<available property="jdk1.2+" classname="java.lang.ThreadLocal" />
-     <available property="jdk1.3+" classname="java.lang.StrictMath" />
<available property="jdk1.2e+" classname="javax.sql.DataSource" />
<available property="junit" classname="junit.framework.Test" />
</target>
--- 37,42 ----
***************
*** 58,68 ****
<property name="connectclass" value="org.postgresql.jdbc1.Connection" />
<available property="connectclass" value="org.postgresql.jdbc2.Connection" classname="java.lang.ThreadLocal" />
-     <!-- comment out 1.3+ stuff -->
-     <property name="jdk13only" value="//" />
-     <available property="jdk13only" value="" classname="java.lang.StrictMath" />
-     <filter token="JDK1.3ONLY" value="${jdk13only}" />
- 
<!-- Some defaults -->
<filter token="MAJORVERSION" value="${major}" />
<filter token="MINORVERSION" value="${minor}" />
--- 57,62 ----
***************
*** 104,110 ****
<target name="compile" depends="prepare,check_versions,driver">
<javac srcdir="${src}" destdir="${dest}">
<include name="${package}/**" />
-       <exclude name="${package}/core/ConnectionHook.java" unless="jdk1.3+" />
<exclude name="${package}/jdbc1/**" if="jdk1.2+" />
<exclude name="${package}/jdbc2/**" unless="jdk1.2+" />
<exclude name="${package}/largeobject/PGblob.java" unless="jdk1.2+" />
--- 98,103 ----
*** ./interfaces/jdbc/org/postgresql/Driver.java.in.orig	Fri Jun 29 19:13:40 2001
--- ./interfaces/jdbc/org/postgresql/Driver.java.in	Fri Jun 29 19:16:58 2001
***************
*** 36,44 ****
// Placing it here, means that the driver is registered once only.
java.sql.DriverManager.registerDriver(new Driver());
-       // New in 7.1 - register ourselves with the JVM - JDK1.3+ only
-       @JDK1.3ONLY@org.postgresql.core.ConnectionHook.init();
- 
} catch (SQLException e) {
e.printStackTrace();
}
--- 36,41 ----

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
(send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#4Joseph Shraibman
jks@selectacast.net
In reply to: Barry Lind (#1)
Re: Patch to remove connection hook and JDK 1.3 dependencies

Barry Lind wrote:

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

I don't see any post on Friday. Why is this being done? Now I'll have
to code my own shutdown hooks.

--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio. http://www.targabot.com

#5Bruce Momjian
bruce@momjian.us
In reply to: Joseph Shraibman (#4)
Re: Re: Patch to remove connection hook and JDK 1.3 dependencies

Barry Lind wrote:

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

I don't see any post on Friday. Why is this being done? Now I'll have
to code my own shutdown hooks.

The consensus was that the function didn't work or wasn't needed. We
can always re-add it. I will wait for a discussion.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#6Joseph Shraibman
jks@selectacast.net
In reply to: Bruce Momjian (#5)
Re: Re: Patch to remove connection hook and JDK 1.3 dependencies

Bruce Momjian wrote:

Barry Lind wrote:

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

I don't see any post on Friday. Why is this being done? Now I'll have
to code my own shutdown hooks.

The consensus was that the function didn't work or wasn't needed. We
can always re-add it. I will wait for a discussion.

If it doesn't work that's one thing but I think it is needed. Whenever
I shut down my java programs I get 'pq_recvbuf: unexpected EOF on client
connection ' in my postgres log. I was going to make my own shutdown
hooks when I moved to java 1.3 but I noticed that there were ones in the
jdbc driver so I thought I didn't have to. And when I kept getting
those messages I just thought I built the driver wrong.

--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio. http://www.targabot.com

#7Bruce Momjian
bruce@momjian.us
In reply to: Joseph Shraibman (#6)
Re: Re: Patch to remove connection hook and JDK 1.3 dependencies

The consensus was that the function didn't work or wasn't needed. We
can always re-add it. I will wait for a discussion.

If it doesn't work that's one thing but I think it is needed. Whenever
I shut down my java programs I get 'pq_recvbuf: unexpected EOF on client
connection ' in my postgres log. I was going to make my own shutdown
hooks when I moved to java 1.3 but I noticed that there were ones in the
jdbc driver so I thought I didn't have to. And when I kept getting
those messages I just thought I built the driver wrong.

Are you using the current CVS jdbc driver from:

http://jdbc.fastcrypt.com

or an older version? I hope it is at least 7.1.X.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
#8Joseph Shraibman
jks@selectacast.net
In reply to: Bruce Momjian (#7)
Re: Patch to remove connection hook and JDK 1.3 dependencies

I'm using the 7.1.2 driver.

BTW having to add a line to your permission file for shutdown hooks is
not a good reason to get rid of this feature. It most cases it would be
extremely unlikely for an attacker to get a chance to add a shutdown
hook to your jvm and if they do they've probably already got the means
to do Bad Things. The java.policy file can have an entry to allow only
code in org.postgres to add shutdown hooks (maybe we should put this in
the documentation).

The only case where it might matter is if you are trying to access
postgres directly from an applet and you can't finely control the
permissions of the applet sandbox.

Bruce Momjian wrote:

The consensus was that the function didn't work or wasn't needed. We
can always re-add it. I will wait for a discussion.

If it doesn't work that's one thing but I think it is needed. Whenever
I shut down my java programs I get 'pq_recvbuf: unexpected EOF on client
connection ' in my postgres log. I was going to make my own shutdown
hooks when I moved to java 1.3 but I noticed that there were ones in the
jdbc driver so I thought I didn't have to. And when I kept getting
those messages I just thought I built the driver wrong.

Are you using the current CVS jdbc driver from:

http://jdbc.fastcrypt.com

or an older version? I hope it is at least 7.1.X.

--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio. http://www.targabot.com

#9Barry Lind
barry@xythos.com
In reply to: Barry Lind (#1)
Re: Patch to remove connection hook and JDK 1.3 dependencies

See:

http://www.ca.postgresql.org/mhonarc/pgsql-jdbc/2001-06/msg00174.html

thanks,
--Barry

Joseph Shraibman wrote:

Show quoted text

Barry Lind wrote:

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

I don't see any post on Friday. Why is this being done? Now I'll have
to code my own shutdown hooks.

#10Barry Lind
barry@xythos.com
In reply to: Bruce Momjian (#5)
Re: Patch to remove connection hook and JDK 1.3 dependencies

If you shutdown the JVM without closing your connections this is the
behavior I would expect in to see in that case. Your code should be
closing any open connections to the database before exiting.

This same behavior can be seen in psql as well. If psql exits
unexpectedly (i.e. you kill a psql process) you will get the same
'unexpected EOF...' message on the server.

thanks,
--Barry

Joseph Shraibman wrote:

Show quoted text

Bruce Momjian wrote:

Barry Lind wrote:

Attached is a patch to remove the ConnectionHook functionality and thus
the JDK 1.3 dependency. For a further explanation see my posting to the
JDBC list on Friday, explaining why this is being done.

I don't see any post on Friday. Why is this being done? Now I'll have
to code my own shutdown hooks.

The consensus was that the function didn't work or wasn't needed. We
can always re-add it. I will wait for a discussion.

If it doesn't work that's one thing but I think it is needed. Whenever
I shut down my java programs I get 'pq_recvbuf: unexpected EOF on client
connection ' in my postgres log. I was going to make my own shutdown
hooks when I moved to java 1.3 but I noticed that there were ones in the
jdbc driver so I thought I didn't have to. And when I kept getting
those messages I just thought I built the driver wrong.

#11Joseph Shraibman
jks@selectacast.net
In reply to: Bruce Momjian (#7)
Re: Patch to remove connection hook and JDK 1.3 dependencies

Joseph Shraibman wrote:

<snip>

OK I looked at ConnectionHook in the cvs and there is obviously code
there to close the connections, but where is the code that calls
ConnectionHook.open()? That's probably the problem.

Also a Vector should be used instead of an ArrayList because there could
be multiple threads accessing the jdbc driver at the same time. It
could be that open() and close() are only supposed to be called from
code that is locked anyway but I can't verify that.

Also I'm wondering why there is a ConnectionHook class at all. It seems
to me it would be better to have this stuff in Connection itself and we
wouldn't have to do that strange workaround of calling init().

If I can connect to the cvs I'll try and code it.

--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio. http://www.targabot.com

#12Joseph Shraibman
jks@selectacast.net
In reply to: Bruce Momjian (#7)
Re: Patch to remove connection hook and JDK 1.3 dependencies

Joseph Shraibman wrote:

<snip>

to do Bad Things. The java.policy file can have an entry to allow only
code in org.postgres to add shutdown hooks (maybe we should put this in
the documentation).

grant codeBase "file:///usr/local/pgsql/share/java/" {
permission java.lang.RuntimePermission "shutdownHooks";
};

I think there is a way to grant permission based on what package a class
is in (i.e. org.postgres) but I couln't find it.

--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio. http://www.targabot.com