[7.5] Packages corrupted in Store

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[7.5] Packages corrupted in Store

Roger Whitney
The following has now happened to me twice while using 7.5 & store.

Commit a package to store, then read the package in a new image. When  
I read the package in the new image it now has methods from a class  
from a different package. The other package was not in my original  
image, but was of course in my Store repository.

I can not repeat this. It has happened on two different Store  
repositories on different machines running two different versions of  
PostgresSQL.

1. Does any one know how to avoid this?

2. Is it time for me to revert to 7.4.1? (Is this a 7.5 issue or have  
I just been lucky up to now?)

3. Is there an easy way to remove these methods from my package? That  
is how do I remove methods from my image when their class is not  
defined in the image? (Currently I start with a new image, define the  
class in question, then load the corrupted package and then I can  
remove the methods from the package.

As far as I can tell I have not lost any methods from my original  
package, but I am very nervous about using Store at the moment.
----
Roger Whitney              Department of Computer Science
[hidden email]        San Diego State University
http://www.eli.sdsu.edu/   San Diego, CA 92182-7720
(619) 583-1978
(619) 594-3535 (office)
(619) 594-6746 (fax)

Reply | Threaded
Open this post in threaded view
|

Re: [7.5] Packages corrupted in Store

Alan Knight-2
This seems very odd, and I haven't heard of it happening before.

When you talk about using two different databases, are you commonly using different databases from the same machine? I ask that because the symptom you're seeing suggests the possibility of corruption where it's using keys from one database in a different one. I haven't seen that either, and I use multiple databases quite frequently, but it's at least a hint.

Having them show up as additional methods seems very bizarre. I would expect that in most circumstances where you got an error like that it would be mis-interpreting data and loading it in place of something else.

If you re-reconcile the package with the one in the database, does it still show itself as having the methods? If it doesn't, then that's an obvious way to get rid of them. If you browse the packages in the database, do they show up as having the additional methods? If you look at the original image they were published from, are the methods in there? That seems like the likeliest thing to me, if they're showing up as additions. One thing that's known to possibly cause this is if you're using the debugger on Store loads. Store has a global current package, and when loading code, sets that temporarily while filing in the code. So if you're debugging a load and make changes, they may suddenly appear in the package you're loading. But debugging loads that way is an unusual activity.

At 06:42 PM 7/9/2007, Roger Whitney wrote:
The following has now happened to me twice while using 7.5 & store.

Commit a package to store, then read the package in a new image. When 
I read the package in the new image it now has methods from a class 
from a different package. The other package was not in my original 
image, but was of course in my Store repository.

I can not repeat this. It has happened on two different Store 
repositories on different machines running two different versions of 
PostgresSQL.

1. Does any one know how to avoid this?

2. Is it time for me to revert to 7.4.1? (Is this a 7.5 issue or have 
I just been lucky up to now?)

3. Is there an easy way to remove these methods from my package? That 
is how do I remove methods from my image when their class is not 
defined in the image? (Currently I start with a new image, define the 
class in question, then load the corrupted package and then I can 
remove the methods from the package.

As far as I can tell I have not lost any methods from my original 
package, but I am very nervous about using Store at the moment.
----
Roger Whitney              Department of Computer Science
[hidden email]        San Diego State University
http://www.eli.sdsu.edu/  San Diego, CA 92182-7720
(619) 583-1978
(619) 594-3535 (office)
(619) 594-6746 (fax)

--
Alan Knight [|], Cincom Smalltalk Development
Reply | Threaded
Open this post in threaded view
|

RE: [7.5] Packages corrupted in Store

Paul Baumann
Any [replacement] overrides involved for those methods? Perhaps an unintended override from code movement? Overrides get screwed up easily (in 7.3.1 at least). Changes can become associated with the wrong package from earlier override load mistakes. Override oddities have been discussed at length and some are supposed to be fixed in 7.5; no need to revisit again. I've seen methods become associated with the wrong package this way. What works for some of our code is to reload specific packages a couple times until changes are gone. The wrong code is loaded but it shows as a clean load and publishes OK next time.
 
Paul Baumann 
IntercontinentalExchange | ICE
 


From: Alan Knight [mailto:[hidden email]]
Sent: Monday, July 16, 2007 11:19 AM
To: Roger Whitney; VW NC
Subject: Re: [7.5] Packages corrupted in Store

This seems very odd, and I haven't heard of it happening before.

When you talk about using two different databases, are you commonly using different databases from the same machine? I ask that because the symptom you're seeing suggests the possibility of corruption where it's using keys from one database in a different one. I haven't seen that either, and I use multiple databases quite frequently, but it's at least a hint.

Having them show up as additional methods seems very bizarre. I would expect that in most circumstances where you got an error like that it would be mis-interpreting data and loading it in place of something else.

If you re-reconcile the package with the one in the database, does it still show itself as having the methods? If it doesn't, then that's an obvious way to get rid of them. If you browse the packages in the database, do they show up as having the additional methods? If you look at the original image they were published from, are the methods in there? That seems like the likeliest thing to me, if they're showing up as additions. One thing that's known to possibly cause this is if you're using the debugger on Store loads. Store has a global current package, and when loading code, sets that temporarily while filing in the code. So if you're debugging a load and make changes, they may suddenly appear in the package you're loading. But debugging loads that way is an unusual activity.

At 06:42 PM 7/9/2007, Roger Whitney wrote:
The following has now happened to me twice while using 7.5 & store.

Commit a package to store, then read the package in a new image. When 
I read the package in the new image it now has methods from a class 
from a different package. The other package was not in my original 
image, but was of course in my Store repository.

I can not repeat this. It has happened on two different Store 
repositories on different machines running two different versions of 
PostgresSQL.

1. Does any one know how to avoid this?

2. Is it time for me to revert to 7.4.1? (Is this a 7.5 issue or have 
I just been lucky up to now?)

3. Is there an easy way to remove these methods from my package? That 
is how do I remove methods from my image when their class is not 
defined in the image? (Currently I start with a new image, define the 
class in question, then load the corrupted package and then I can 
remove the methods from the package.

As far as I can tell I have not lost any methods from my original 
package, but I am very nervous about using Store at the moment.
----
Roger Whitney              Department of Computer Science
[hidden email]        San Diego State University
http://www.eli.sdsu.edu/  San Diego, CA 92182-7720
(619) 583-1978
(619) 594-3535 (office)
(619) 594-6746 (fax)

--
Alan Knight [|], Cincom Smalltalk Development
 

This message may contain confidential information and is intended for specific recipients unless explicitly noted otherwise. If you have reason to believe you are not an intended recipient of this message, please delete it and notify the sender. This message may not represent the opinion of IntercontinentalExchange, Inc. (ICE), its subsidiaries or affiliates, and does not constitute a contract or guarantee. Unencrypted electronic mail is not secure and the recipient of this message is expected to provide safeguards from viruses and pursue alternate means of communication where privacy or a binding message is desired.

Reply | Threaded
Open this post in threaded view
|

Re: [7.5] Packages corrupted in Store

Alan Knight-2
In reply to this post by Roger Whitney
I took this offline with Roger, and it appears that the problem was in using the same database identifier for two different databases, and having the same image connect to both. Store uses this identifier to know which database its talking to, and in some circumstances will remember database information like primary keys from the database. This can cause lots of problems if it's publishing to what it thinks is the same database, but in fact is a different one with entirely different keys.

At 06:42 PM 7/9/2007, Roger Whitney wrote:
The following has now happened to me twice while using 7.5 & store.

Commit a package to store, then read the package in a new image. When 
I read the package in the new image it now has methods from a class 
from a different package. The other package was not in my original 
image, but was of course in my Store repository.

I can not repeat this. It has happened on two different Store 
repositories on different machines running two different versions of 
PostgresSQL.

1. Does any one know how to avoid this?

2. Is it time for me to revert to 7.4.1? (Is this a 7.5 issue or have 
I just been lucky up to now?)

3. Is there an easy way to remove these methods from my package? That 
is how do I remove methods from my image when their class is not 
defined in the image? (Currently I start with a new image, define the 
class in question, then load the corrupted package and then I can 
remove the methods from the package.

As far as I can tell I have not lost any methods from my original 
package, but I am very nervous about using Store at the moment.
----
Roger Whitney              Department of Computer Science
[hidden email]        San Diego State University
http://www.eli.sdsu.edu/  San Diego, CA 92182-7720
(619) 583-1978
(619) 594-3535 (office)
(619) 594-6746 (fax)

--
Alan Knight [|], Cincom Smalltalk Development