Question: I've written some Prolog to replace elements in list two with an atom called `empty` if they are contained in list one:

```
replace_build([], _Inv, _Res).

replace_build([A| B], Inv, Res) :-
    replace_build2(A, Inv, Res), replace_build(B, Inv, Res).

replace_build2(_BuildItem, [], _NewInv) :- !.

replace_build2(BuildItem, [BuildItem| T], NewInv) :-
    replace_build2(BuildItem, T, NewInv1),
    append([empty], NewInv1, NewInv).

replace_build2(BuildItem, [H| T], NewInv) :-
    replace_build2(BuildItem, T, NewInv1),
    append([H], NewInv1, NewInv).

```

However, when I run it, I get an unusual anonymous variable (is that the correct terminology?) as per the following example:

```
?- replace_build([item3], [empty, item5, item1, item3, empty], X).
X = [empty, item5, item1, empty, empty|_G467]

```

(Also it resatisfies which I don't want, although hopefully I can work that out!)

Why is the `|_G467` in the resultant list?

Answer: 
There are several ways to achieve this (assuming you're thinking of general config reloading). You can have a daemon thread polling the file for last changed timestamp, and trigger a reload. Or you can check the timestamp on each configuration value lookup, if it doesn't happen to often. But my preferred way would be to expose a "reload configuration" operation either through JMX or a URL that is accessible only from the "inside".
From Apache solr admin, go to core admin and reload respective core. If you are using solr cloud, then it is too easy. Just reload configuration via zookeeper. These changes will be visible only after complete copy.