Skip to contentSkip to conversation

Alfred update-command

B.A.T.M.A.N. Dominik Heidler 2 participants 6 messages Oct 4, 2015

lore
Share & tools
lore
#0 lore raw

Hi,

I tried to use the alfred update-command but it seems that the update-command is only triggered when data is purged but not when new data is received.

The changed_data_type() method is only called from the purge_data() method.

169 while (NULL != (hashit = hash_iterate(globals->data_hash,
hashit))) {
170 struct dataset *dataset = hashit->bucket->data;
171
172 time_diff(&now, &dataset->last_seen, &diff);
173 if (diff.tv_sec < ALFRED_DATA_TIMEOUT)
174 continue;
175
176 changed_data_type(globals, dataset->data.header.type);

177

178         hash_remove_bucket(globals->data_hash, hashit);
179         free(dataset->buf);
180         free(dataset);

181 }

Is this the way the update-command should work or am I doing something wrong?

Regards,
Dominik Heidler

#1 lore raw
Quoted 7 lines · On Sunday 04 October 2015 16:23:28 Dominik Heidler wrote:

Hi,

I tried to use the alfred update-command but it seems that the update-command is only triggered when data is purged but not when new data is received.

The changed_data_type() method is only called from the purge_data() method.

[...]

Nope, see finish_alfred_push_data (when data was synced to a master node):

		/* check that data was changed */
		if (new_entry_created ||
		    dataset->data.header.length != data_len ||
		    memcmp(dataset->buf, data->data, data_len) != 0)
			changed_data_type(globals, data->header.type);

It is useless on slave instances because they only pull data when it is required. But better ask Anatoliy because he is creator of this feature and the only one I know who seems to use it.

Kind regards,
Sven

#2 lore raw

Hi,

ah so the update hook is only executed, when the master gets the data update via UDP. In my testsetup I updated the master data directly via Unix socket on the master.

Regards,
Dominik

Am 4. Oktober 2015 18:17:56 MESZ, schrieb Sven Eckelmann <[email protected]>:

Quoted 28 lines · On Sunday 04 October 2015 16:23:28 Dominik Heidler wrote:
Quoted 7 lines

Hi,

I tried to use the alfred update-command but it seems that the update-command is only triggered when data is purged but not when new data is received.

The changed_data_type() method is only called from the purge_data()

method.
[...]

Nope, see finish_alfred_push_data (when data was synced to a master node):

		/* check that data was changed */
		if (new_entry_created ||
		    dataset->data.header.length != data_len ||
		    memcmp(dataset->buf, data->data, data_len) != 0)
			changed_data_type(globals, data->header.type);

It is useless on slave instances because they only pull data when it is

required. But better ask Anatoliy because he is creator of this feature and
the only one I know who seems to use it.

Kind regards,
Sven

#3 lore raw
Quoted 3 lines · On Sunday 04 October 2015 18:22:54 Dominik Heidler wrote:

ah so the update hook is only executed, when the master gets the data update via UDP. In my testsetup I updated the master data directly via Unix socket on the master.

Correct. Usually you don't need to inform the local system that the system itself updated the state of the alfred data :)

But feel free to discuss it with Anatoliy here on the mailing list (so we can follow the pros/cons of a design change).

Kind regards,
Sven

#4 lore raw

Is the hook executed as well when the data is pushed from another master node?

Regards,
Dominik

Am 4. Oktober 2015 18:27:54 MESZ, schrieb Sven Eckelmann <[email protected]>:

Quoted 17 lines · On Sunday 04 October 2015 18:22:54 Dominik Heidler wrote:
Quoted 1 line

ah so the update hook is only executed, when the master gets the data

update

Quoted 1 line

via UDP. In my testsetup I updated the master data directly via Unix

socket

Quoted 1 line

on the master.

Correct. Usually you don't need to inform the local system that the system
itself updated the state of the alfred data :)

But feel free to discuss it with Anatoliy here on the mailing list (so we can
follow the pros/cons of a design change).

Kind regards,
Sven

#5 lore raw
Quoted 2 lines · On Sunday 04 October 2015 18:30:48 Dominik Heidler wrote:

Is the hook executed as well when the data is pushed from another master node?

Master-2-Master syncs also go through the function finish_alfred_push_data when the sync was completed successfully. So this hook should also be called in Anatoliy's implementation. It is basically the idea behind it.

Kind regards,
Sven