]
S Pokutniy commented on JGRP-2362:
----------------------------------
Sure, apologies for unclear description. What happens is this:
1) I can hardly use CREATE Table in parameter initialize_sql in JDBC_PING as it is done in
an DML in my case.
2) My servers do crash frequently and can also be killed. If I do not do any clearing of
old datasets the new start of the server lasts 3 (GSM.getJoinClusterTimeout) *
10(GSM.MaxJoinAttempts) * number of old entries = i.e. at least 30 seconds * number of old
entries for the same server with its old UUID. Parameter remove_all_data_on_view_change
does not seem to clear the data only when coordinator changes.
3) Therefore I would like to delete old entries in JDBC_PING's parameter
initialize_sql by using delete from JGROUPSPING where coordinator = x or logical_name = x
As own_addr is a UUID and is always different it can hardly be used here and the logical
address or the channel name would be a gain here but it is not there. In the source code I
see that adding it would not be that diffecult as the data is already available in the
object PingData.
If it is unclear I would gladly write more details.
Providing logical member name in JDBC_PING
------------------------------------------
Key: JGRP-2362
URL:
https://issues.jboss.org/browse/JGRP-2362
Project: JGroups
Issue Type: Feature Request
Affects Versions: 4.0.17, 4.0.18, 4.0.19, 4.1.0, 4.0.20
Reporter: S Pokutniy
Assignee: Bela Ban
Priority: Minor
Fix For: 4.1.2
When using JDBC_PING and logical names instead of UUIDs and one of the cluster member
crashes or get killed and this member is not coordinator then its database set still
remains in the database as long as coordinator changes (independently from
remove_old_coords_on_view_change /remove_all_data_on_view_change). If the the cluster is
then restarted the old dataset makes connect() much slower (+30 seconds), as the members
seem to be tryting to connect to it. Parameter remove_all_data_on_view_change seems to be
the solution but it does not work as long as coordinator does not change, so practically
the same as remove_old_coords_on_view_change.
The only solution seems to be to provide an appropriate delete statement in parameter
initialize_sql, which would delete old entry, for example like this: delete from
JGROUPSPING where ping_data like '%logical name%'. However, this is neither really
quick nor the ideal solution, as ping_data's datatype is bytea or bit varying.
It would be great to have also logical name in JGROUPSPING, which is instead per default
in insert(). This is also easy to implement as there is access to this information in
PingData.