i have attached patch, where online filtered sessions are taken from memory - not iterated trough the hole database.
also i think the the other code should be changed (optimized). currently on every request there are made numberOfRegistrations + 1 sql requests -> for my ~66000 registrations really too much…
pherhaps this code made help (from DefaultUserProvider):
pstmt = DbConnectionManager.createScrollablePreparedStatement(con, ALL_USERS);
rs = pstmt.executeQuery();
DbConnectionManager.setFetchSize(rs, startIndex + numResults);
DbConnectionManager.scrollResultSet(rs, startIndex);
/code
altough i think, it would help very much if openfire will take use of “LIMIT x,y” in sql statements if the sql server supports it (configurable). it will make it a lot faster for a big userbase. and it shouldn’t be to hard - because it could be filtered on prepare in DbConnectionManager…
is there a reason why in gatewayRegistrations the full jid is stored ? all other tables only have the username stored.
gateway-registration.patch (10515 Bytes)