On 9/4/15 10:44 AM, Alexey Loubyansky wrote:
On 09/04/2015 04:27 PM, Brian Stansberry wrote:
> On 9/4/15 12:55 AM, Alexey Loubyansky wrote:
>> On 09/04/2015 12:10 AM, Brian Stansberry wrote:
-- skip --
>>> Below are bad ideas that I wrote down and then thought better of, but
>>> I'll send them in case it sparks a thought.
>>>
>>> I. Since there is already logic for dropping out of the batch for things
>>> like cd, ls, could it be modified as follows?
>>>
>>> a) Close any current batch and execute that batch.
>>> b) Execute the cd, ls, etc
>>> c) Proceed, and if the next statement isn't a cd, ls etc, start a new
batch.
>>>
>>> That seems like a better semantic for cd and ls anyway.
>>
>> I don't think so. The batch mode is also a composition/editing mode. cd
>> and ls are useful when writing commands/operations that should be added
>> to the batch. Imagine editing a batch and wishing to cd before entering
>> next lines. That won't be possible without explicit holback-batch, cd
>> and then batch again. That would be inconvenient.
>>
>
> Thanks; that's a very good point. Yesterday, I was having a hard time
> seeing the point of ls inside an if/else; now I get it. :)
>
>>> With that, reload and shutdown can be treated the same as cd, ls.
>>
>> For reload and shutdown that does seem to make sense. So, a possible
>> alternative is making them exceptions.
>>
>
> I said yesterday (below) that this was a bad idea because it can still
> break scripts or prevent rollback, same as your proposal. But I think in
> practice this wouldn't be a real drawback, since AIUI the bugs mean any
> existing script with reload/shutdown in the middle of a bunch of other
> ops would be broken anyway. Right?
:reload or :shutdown don't make any sense in the middle of a composite
operation.
Agreed.
If they make sense in a batch, they should be last. Even
then, does it make sense to include them into a composite operation?
In a CLI batch, the benefit of including them last is the exclusive
write lock acquired by the previous steps is held until the reload is
initiated. If it's a separate step another change from a different
client can sneak in between.
In a non-CLI composite there's also a minor advantage in that the params
to :reload/:shutdown will be validated inside the composite and if they
are invalid this will roll back the composite. But in a CLI batch the
CLI isn't going to send invalid params from its high level commands.
--
Brian Stansberry
Senior Principal Software Engineer
JBoss by Red Hat