[OpenAFS-devel] Q's Java API (JAFS) in the 1.4.x build branch

Jeffrey Altman jaltman@secure-endpoints.com
Fri, 11 Jul 2008 13:06:25 -0400


This is a cryptographically signed message in MIME format.

--------------ms040508050905010706030009
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Jim Doyle wrote:
> I recently discovered that libjafs.so builds out with the default build 
> from the head of the 1.4.x branch. It appears if you got JAVA_HOME in your env path, that configure chases after it and adds it as a build target.
> 
> I was PLEASANTLY suprised to see that not only does it build, but it 
> works (!) with just a few minor bug fixes nonetheless. I was able to 
> traverse my cell and have it dump all the servers, partitions and volume
> information.
> 
> Who is using JAFS?   Who is relying on it?   Who, if anyone, has put time
> into it to maintain it?
> 
> There are a number of design and architectural issues with JAFS that I see
> immediately that I could fix ; provided it isnt being already done by others:
> 
> 1.  hashCode()/equals() is improperly implemented in the current codebase.
> In particular, the signature equals(Object o) must be implemented properly
> and further, hashCode() must ALSO be overriden at the same time to reflect  
 >the object identity rule, as opposed to the default reference identity 
behavior
 > I've already fixed this, I'd just need cvs commit privs.

Commit privileges for OpenAFS are only granted to the gatekeepers.
Send patches to openafs-bugs@openafs.org.  This will create a ticket in
the request tracking system.  Send one patch per ticket.

> 2.  The architecture is not suitable for most Java environments because
> attribute values have been too closed coupled to the behavior specific to native methods.  Architecturally, the entity classes (Cell, Volume, etc), need to be Serializable POJOs with no behavioural methods - they are just value objects. The "behavioral" methods should be moved to pure Interfaces (i.e. releaseVolume(...), createVolume(...)).  A number of concrete classes can then realize these interfaces ; NAMELY:  Proxies for remoting access
> to JAFS via RMI-IIOP, RMI-JRMP, even web methods.   Adapters that implement but hide the specifics of the Java Native Methods glue.   Interceptors that can shim ontop the service interfaces to implement auditing, access control etc. This is classis SOA (service oriented architecture) stuff...

There is no one working on such architectural issues.  The architecture
we have is essentially what was developed internally at IBM.

Create a design proposal and it can discussed in this forum.  There are 
not a lot of Java developers here.  I have not developed for Java in
quite a number of years but was fairly proficient when I did.  I will
be able to review your design and provide feedback.

We should also see what updates are required to support Kerberos v5
if any.

> 3.  If these minor but significant architectural enhancements can be pulled off (at the cost of breaking the "current" JAFS API signatures!), JAFS
> should not only be alot easier to maintain, BUT, should be eminently usable
> by both JFC/Swing UI developers, web developers as well as work with the frameworks (EJB3, Spring).  Further, using the classic SOA architecture
> I proposed, it'd not be hard to wrap the JAFS API with a Webservice to
> permit other language bindings (Perl, Ruby, etc).

Great.

> 4.  Dump the checked exceptions and use runtime exceptions.

Sure

> 5.  Because we dont know how multiple Java threads hitting multiple methods
> on the same _impl object and spawning multiple Pthreads for RX is going
> to behave, it also makes sense to change the JNI methods to use a master
> lock to avoid psychotic thread-mapping/thread safety issues. The master lock approach is a hack, but its correct at the expense of performance. 

Where are your concerns?  RX is thread-safe.  As long as the _impl 
objects are thread safe I would expect the system to be.   Global locks
are to be avoided.

> That said, I'd like to know who out there is already on JAFS and also
> who is depending on the current API for production work.... The proposed
> refactoring will substantially alter the API. 

There are certainly people using the existing API.  I suggest making a
more complete proposal so that we can see where the breakage will be.

Jeffrey Altman

--------------ms040508050905010706030009
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJeTCC
AxcwggKAoAMCAQICEDsE+kRcmomW1hYG6BoqhGEwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA4MDUzMDE5MTUyOVoX
DTA5MDUzMDE5MTUyOVowczEPMA0GA1UEBBMGQWx0bWFuMRUwEwYDVQQqEwxKZWZmcmV5IEVy
aWMxHDAaBgNVBAMTE0plZmZyZXkgRXJpYyBBbHRtYW4xKzApBgkqhkiG9w0BCQEWHGphbHRt
YW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQCtf5bVJdYFtHIrV2XALpA5oaMu7FPYU7RP7vJhd8Cu9Kd9ud2crX2pHK4avuPaYb4Vg9qI
zPrPadePhJ3OWwNt1ZlUlpc5URnOfpg/I9iymZBUSnCFVLuIvoncacqyUlzqdYEF8XGEoEL6
6bj8uoCSX0D7ZjZiAS8993NvgiPYpf10acMyWQ4max+P7Wg9T03Nw2F6EsmP6gWxBRsekTXe
N6QjJdvaK0846lDqeBFoCEzIUMQXj2kiXVPCPEdxPc/L1sDMYf0GLaDIg8qyThpGd0X6DwfK
3RWcMy8DV7Q5Z+jSEdPn5X0l4anOTrjr3IwE57MC3bVs0EEpUODTzftnAgMBAAGjOTA3MCcG
A1UdEQQgMB6BHGphbHRtYW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wDAYDVR0TAQH/BAIwADAN
BgkqhkiG9w0BAQUFAAOBgQA9kndmeLrdQOUbhNGGms/FnfDyraH4OjA4PIIMOCbGWK0YXczs
/Fqn4XkT70SG4s8v4Zg6TaAcJrZBVcZQXyzrhlF2Zev/g69zZMHQe+2r4i/3FBVKAtFCoea1
vgwJ5TfZYlKvt4D0Z4zexu9Y0VwCIR4plWjVD76zC2CGB/2fhjCCAxcwggKAoAMCAQICEDsE
+kRcmomW1hYG6BoqhGEwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT
HFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h
bCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA4MDUzMDE5MTUyOVoXDTA5MDUzMDE5MTUyOVow
czEPMA0GA1UEBBMGQWx0bWFuMRUwEwYDVQQqEwxKZWZmcmV5IEVyaWMxHDAaBgNVBAMTE0pl
ZmZyZXkgRXJpYyBBbHRtYW4xKzApBgkqhkiG9w0BCQEWHGphbHRtYW5Ac2VjdXJlLWVuZHBv
aW50cy5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtf5bVJdYFtHIrV2XA
LpA5oaMu7FPYU7RP7vJhd8Cu9Kd9ud2crX2pHK4avuPaYb4Vg9qIzPrPadePhJ3OWwNt1ZlU
lpc5URnOfpg/I9iymZBUSnCFVLuIvoncacqyUlzqdYEF8XGEoEL66bj8uoCSX0D7ZjZiAS89
93NvgiPYpf10acMyWQ4max+P7Wg9T03Nw2F6EsmP6gWxBRsekTXeN6QjJdvaK0846lDqeBFo
CEzIUMQXj2kiXVPCPEdxPc/L1sDMYf0GLaDIg8qyThpGd0X6DwfK3RWcMy8DV7Q5Z+jSEdPn
5X0l4anOTrjr3IwE57MC3bVs0EEpUODTzftnAgMBAAGjOTA3MCcGA1UdEQQgMB6BHGphbHRt
YW5Ac2VjdXJlLWVuZHBvaW50cy5jb20wDAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQUFAAOB
gQA9kndmeLrdQOUbhNGGms/FnfDyraH4OjA4PIIMOCbGWK0YXczs/Fqn4XkT70SG4s8v4Zg6
TaAcJrZBVcZQXyzrhlF2Zev/g69zZMHQe+2r4i/3FBVKAtFCoea1vgwJ5TfZYlKvt4D0Z4ze
xu9Y0VwCIR4plWjVD76zC2CGB/2fhjCCAz8wggKooAMCAQICAQ0wDQYJKoZIhvcNAQEFBQAw
gdExCzAJBgNVBAYTAlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUg
VG93bjEaMBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp
b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFp
bCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhhd3RlLmNvbTAeFw0w
MzA3MTcwMDAwMDBaFw0xMzA3MTYyMzU5NTlaMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxU
aGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwg
RnJlZW1haWwgSXNzdWluZyBDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxKY8VXNV
+065yplaHmjAdQRwnd/p/6Me7L3N9VvyGna9fww6YfK/Uc4B1OVQCjDXAmNaLIkVcI7dyfAr
hVqqP3FWy688Cwfn8R+RNiQqE88r1fOCdz0Dviv+uxg+B79AgAJk16emu59l0cUqVIUPSAR/
p7bRPGEEQB5kGXJgt/sCAwEAAaOBlDCBkTASBgNVHRMBAf8ECDAGAQH/AgEAMEMGA1UdHwQ8
MDowOKA2oDSGMmh0dHA6Ly9jcmwudGhhd3RlLmNvbS9UaGF3dGVQZXJzb25hbEZyZWVtYWls
Q0EuY3JsMAsGA1UdDwQEAwIBBjApBgNVHREEIjAgpB4wHDEaMBgGA1UEAxMRUHJpdmF0ZUxh
YmVsMi0xMzgwDQYJKoZIhvcNAQEFBQADgYEASIzRUIPqCy7MDaNmrGcPf6+svsIXoUOWlJ1/
TCG4+DYfqi2fNi/A9BxQIJNwPP2t4WFiw9k6GX6EsZkbAMUaC4J0niVQlGLH2ydxVyWN3amc
OY6MIE9lX5Xa9/eH1sYITq726jTlEBpbNU1341YheILcIRk13iSx0x1G/11fZU8xggNkMIID
YAIBATB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5
KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQ
OwT6RFyaiZbWFgboGiqEYTAJBgUrDgMCGgUAoIIBwzAYBgkqhkiG9w0BCQMxCwYJKoZIhvcN
AQcBMBwGCSqGSIb3DQEJBTEPFw0wODA3MTExNzA2MjVaMCMGCSqGSIb3DQEJBDEWBBTj7/QR
P3AD6GVqaNGzRp5hjIzLqjBSBgkqhkiG9w0BCQ8xRTBDMAoGCCqGSIb3DQMHMA4GCCqGSIb3
DQMCAgIAgDANBggqhkiG9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBhQYJKwYB
BAGCNxAEMXgwdjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcg
KFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3Vpbmcg
Q0ECEDsE+kRcmomW1hYG6BoqhGEwgYcGCyqGSIb3DQEJEAILMXigdjBiMQswCQYDVQQGEwJa
QTElMCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhh
d3RlIFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECEDsE+kRcmomW1hYG6BoqhGEwDQYJ
KoZIhvcNAQEBBQAEggEAAfGYRlNfV0XHZ/lawL+Zg0cj8Abc8lrdm+ZHvhhJTbIbI/Gup9cu
W5kyv5yYtJGA6rVO7Qs6GFFysBhgVKaVJWpCcevLJBJETfUfvUBHKXKlBEpZvXWs76a6SQ38
morfuwftK18m7nNryHK6LKD/0hIEk7RyouUHWoam93ZXl6YvdW3eTI7HNxlCuAkEV78B7yrW
rW/YppC4kY79c/Com/8vGUON8nzE6OvJfGJwPvIia6C2bE2FJ1fziIHjbWpX8/HCPvUBa9O+
Rn3vtaQeA/xENr5hP21uFGIXZctLyFebQ3cF/1KNfuB92ze80UsibCD3RCE+2AeGOXOCuSzK
WwAAAAAAAA==
--------------ms040508050905010706030009--