GEODE-7971: Gw sender deliver TX events atomically to Gw receivers

A new flag is added to gateway senders: group-transaction-events.
If set to true, events for the same transaction will not be
spread across different batches, i.e. it is guaranteed that
they will be delivered inside the same batch.
In order to implement this behavior,
the last event for each transaction is marked with a new flag
and the transactionId before it is put in the sender's queue
(new flag added to GatewaySenderEvent). That way, it is possible
for the gateway senders to go through a
batch ready to be sent and verify if the last event for
each transaction is present in the batch.
If not, the gateway sender will traverse the sender queue
to get the missing events for the incomplete transactions
and once they are added to the batch, the batch will be sent.
This feature has the following restrictions:

The group-transaction-events can only be set on
serial gateway senders with just 1 dispatcher thread
or on parallel gateway senders.
In order to guarantee that the events of a transaction
are to not spread
across different batches, the regions involved in the
transaction must all have the same senders with the
group-transaction-events flag set to true configured.

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[X] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[X] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[X] Is your initial contribution a single, squashed commit?

[X] Does gradlew build run cleanly?

[X] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, check Concourse for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

Sorry, I haven't had time to dig deeply into this PR.
There were some concerns on the rfc for interleaving or out of ordering of events. I might have missed it, but were there some tests that can prove that we don't get out of order events on the receiving side?

As pointed out in the RFC, with this feature there could be some reordering of events but it would happen on events so close in time that it could not even be assured that the original order in the queue was the right order.

I ran a test with this scenario:

2 colocated partitioned regions called customer and order attached to a parallel sender
1 replicated region called customer_creation_time attached to a serial sender

The transaction does:

put 1 customer into customer region
put 10 orders into order region
put customer create time into customer_creation_time region

Here are some notes from this test:
GatewaySenderFactoryImpl.configureGatewaySender needs a line like below. Otherwise, the Geode xml case doesn't pass the boolean to the sender.
this.attrs.isGroupTransactionEvents = senderCreation.isGroupTransactionEvents()

The scenario above is not supported since the transaction is spanning multiple senders. I don't think there is a way to determine that during configuration, but the message that is logged needs additional info:
[error 2020/04/27 15:45:57.439 PDT <Pooled Waiting Message Processor 2> tid=0x57] Not all events in transaction go to the same senders that group transactions

At least the sender ids should be logged if not which events go to which senders.
I see TXLastEventInTransactionUtils.checkAllEventsGoToSameGroupingSenders is throwing the ServiceConfigurationError. Maybe that ServiceConfigurationError's message can contain this info. Then you can log the error. Maybe even the actual stack.
Also, I see that the test above succeeds. The batch is sent with the customer and orders. Other than that warning which the customer could easily miss, there is no evidence that all the events in the transaction were not sent in the same batch. Maybe the commit should fail?
I'll change my test to remove the serial sender and continue to look at this.

Thanks for your comments.
Please, see below:

I ran a test with this scenario:
* 2 colocated partitioned regions called customer and order attached to a parallel sender

* 1 replicated region called customer_creation_time attached to a serial sender

I assume that both senders are configured to group transactions.

The transaction does:
* put 1 customer into customer region

* put 10 orders into order region

* put customer create time into customer_creation_time region

Here are some notes from this test:
GatewaySenderFactoryImpl.configureGatewaySender needs a line like below. Otherwise, the Geode xml case doesn't pass the boolean to the sender.
this.attrs.isGroupTransactionEvents = senderCreation.isGroupTransactionEvents()

Good catch. I have pushed a new commit solving it.

The scenario above is not supported since the transaction is spanning multiple senders. I don't think there is a way to determine that during configuration, but the message that is logged needs additional info:
Actually, the reason why the scenario is not supported is not because the transaction is spanning multiple senders. The reason here is that some events go to some senders (the customer and order events go to the parallel sender) and other events go to other senders (the creation time event goes to the serial sender).
If each event in the transaction went to the same senders, the scenario would be supported.
You could have another scenario in which you configured two parallel senders for customer and order regions, with transactions containing customer and order instances and the transactions would be grouped in batches because all events would go to the same senders (two in this case).
[error 2020/04/27 15:45:57.439 PDT <Pooled Waiting Message Processor 2> tid=0x57] Not all events in transaction go to the same senders that group transactions

At least the sender ids should be logged if not which events go to which senders.
I see TXLastEventInTransactionUtils.checkAllEventsGoToSameGroupingSenders is throwing the ServiceConfigurationError. Maybe that ServiceConfigurationError's message can contain this info. Then you can log the error. Maybe even the actual stack.

The new commit contains an extended logging error including the events and, for each event, to which senders it would be sent to.
I did not want to add this information initially because I am not sure how meaningful it would be for the one reading it and also because it would add processing time.

Also, I see that the test above succeeds. The batch is sent with the customer and orders. Other than that warning which the customer could easily miss, there is no evidence that all the events in the transaction were not sent in the same batch. Maybe the commit should fail?

It would not be possible at this point to make the commit fail as the processing is done after the commit. If done before, it could slow down transaction operations.
Besides, I think it is better to make the operation progress to the other side logging the error which would indicate that there would be a small chance that the events would not be sent in the same batch. This, in turn, could only be a problem when there is a network split.

I'll change my test to remove the serial sender and continue to look at this.

If I do this:

start site 1 with a sender with batch size = 5
do a transaction with 1 customer and 10 orders
don't start site 2 immediately

I see behavior like below:
The first call to peek is correct. It returns 11 events.
Since the batch can't be sent, the batch is recreated. This batch only contains 5 events.

Here are the details.
The first batch has the 11 events.
5 events are peeked initially:
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peek peeked a batch of 5 events into batch:
  GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=0;bucketId=48];action=0;operation=CREATE;region=/customer;key=0;value=Customer[id=0; name=name-0];shadowKey=161;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
  GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=1;bucketId=48];action=0;operation=CREATE;region=/order;key=0-0;value=Order[id=0-0; customerId=0];shadowKey=274;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
  GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=2;bucketId=48];action=0;operation=CREATE;region=/order;key=0-1;value=Order[id=0-1; customerId=0];shadowKey=387;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
  GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=3;bucketId=48];action=0;operation=CREATE;region=/order;key=0-2;value=Order[id=0-2; customerId=0];shadowKey=500;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
  GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=4;bucketId=48];action=0;operation=CREATE;region=/order;key=0-3;value=Order[id=0-3; customerId=0];shadowKey=613;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]

The remaining 6 from the transaction are peeked in peekEventsFromIncompleteTransactions:
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peekEventsFromIncompleteTransactions areAllTransactionsCompleteInBatch=false
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peekEventsFromIncompleteTransactions getting missing transactions for transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1; bucketId=48
Event Processor for GatewaySender_ny_3: BucketRegionQueue.getElementsMatching key=726; object=GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=5;bucketId=48];action=0;operation=CREATE;region=/order;key=0-4;value=Order[id=0-4; customerId=0];shadowKey=726;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
Event Processor for GatewaySender_ny_3: BucketRegionQueue.getElementsMatching key=839; object=GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=6;bucketId=48];action=0;operation=CREATE;region=/order;key=0-5;value=Order[id=0-5; customerId=0];shadowKey=839;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
Event Processor for GatewaySender_ny_3: BucketRegionQueue.getElementsMatching key=952; object=GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=7;bucketId=48];action=0;operation=CREATE;region=/order;key=0-6;value=Order[id=0-6; customerId=0];shadowKey=952;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
Event Processor for GatewaySender_ny_3: BucketRegionQueue.getElementsMatching key=1065; object=GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=8;bucketId=48];action=0;operation=CREATE;region=/order;key=0-7;value=Order[id=0-7; customerId=0];shadowKey=1065;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
Event Processor for GatewaySender_ny_3: BucketRegionQueue.getElementsMatching key=1178; object=GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=9;bucketId=48];action=0;operation=CREATE;region=/order;key=0-8;value=Order[id=0-8; customerId=0];shadowKey=1178;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
Event Processor for GatewaySender_ny_3: BucketRegionQueue.getElementsMatching key=1291; object=GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=10;bucketId=48];action=0;operation=CREATE;region=/order;key=0-9;value=Order[id=0-9; customerId=0];shadowKey=1291;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=true]
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peekEventsFromIncompleteTransactions peeked 6 events in transaction:
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=5;bucketId=48];action=0;operation=CREATE;region=/order;key=0-4;value=Order[id=0-4; customerId=0];shadowKey=726;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=6;bucketId=48];action=0;operation=CREATE;region=/order;key=0-5;value=Order[id=0-5; customerId=0];shadowKey=839;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=7;bucketId=48];action=0;operation=CREATE;region=/order;key=0-6;value=Order[id=0-6; customerId=0];shadowKey=952;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=8;bucketId=48];action=0;operation=CREATE;region=/order;key=0-7;value=Order[id=0-7; customerId=0];shadowKey=1065;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=9;bucketId=48];action=0;operation=CREATE;region=/order;key=0-8;value=Order[id=0-8; customerId=0];shadowKey=1178;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=10;bucketId=48];action=0;operation=CREATE;region=/order;key=0-9;value=Order[id=0-9; customerId=0];shadowKey=1291;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=true]

The final batch contains 11 events:
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peek final batch contains 11 events:
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=0;bucketId=48];action=0;operation=CREATE;region=/customer;key=0;value=Customer[id=0; name=name-0];shadowKey=161;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=1;bucketId=48];action=0;operation=CREATE;region=/order;key=0-0;value=Order[id=0-0; customerId=0];shadowKey=274;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=2;bucketId=48];action=0;operation=CREATE;region=/order;key=0-1;value=Order[id=0-1; customerId=0];shadowKey=387;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=3;bucketId=48];action=0;operation=CREATE;region=/order;key=0-2;value=Order[id=0-2; customerId=0];shadowKey=500;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=4;bucketId=48];action=0;operation=CREATE;region=/order;key=0-3;value=Order[id=0-3; customerId=0];shadowKey=613;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=5;bucketId=48];action=0;operation=CREATE;region=/order;key=0-4;value=Order[id=0-4; customerId=0];shadowKey=726;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=6;bucketId=48];action=0;operation=CREATE;region=/order;key=0-5;value=Order[id=0-5; customerId=0];shadowKey=839;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=7;bucketId=48];action=0;operation=CREATE;region=/order;key=0-6;value=Order[id=0-6; customerId=0];shadowKey=952;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=8;bucketId=48];action=0;operation=CREATE;region=/order;key=0-7;value=Order[id=0-7; customerId=0];shadowKey=1065;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=9;bucketId=48];action=0;operation=CREATE;region=/order;key=0-8;value=Order[id=0-8; customerId=0];shadowKey=1178;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
 	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=10;bucketId=48];action=0;operation=CREATE;region=/order;key=0-9;value=Order[id=0-9; customerId=0];shadowKey=1291;timeStamp=1588101080898;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=true]

The next peeked batch doesn't contain 11 events. It only contains 5. This is because the previous batch failed to be sent which causes addPeekedEvents to actually do something. In this case, it adds batchSize number of events to the batch since these events have already been peeked. When this method returns, the batch contains batchSize events so the loop is short-circuited, and the incompleteTransactionsInBatch processing doesn't occur.
Here is the behavior:
addPeekedEvents adds 5 previously peeked events to the batch:
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.addPeekedEvents added 5 previously peeked events to the batch:
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=0;bucketId=48];action=0;operation=CREATE;region=/customer;key=0;value=Customer[id=0; name=name-0];creationTime=1588101080903;shadowKey=161;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=1;bucketId=48];action=0;operation=CREATE;region=/order;key=0-0;value=Order[id=0-0; customerId=0];creationTime=1588101080906;shadowKey=274;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=2;bucketId=48];action=0;operation=CREATE;region=/order;key=0-1;value=Order[id=0-1; customerId=0];creationTime=1588101080906;shadowKey=387;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=3;bucketId=48];action=0;operation=CREATE;region=/order;key=0-2;value=Order[id=0-2; customerId=0];creationTime=1588101080906;shadowKey=500;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=4;bucketId=48];action=0;operation=CREATE;region=/order;key=0-3;value=Order[id=0-3; customerId=0];creationTime=1588101080906;shadowKey=613;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]

peekEventsFromIncompleteTransactions short-circuits because returns because areAllTransactionsCompleteInBatch is true:
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peekEventsFromIncompleteTransactions areAllTransactionsCompleteInBatch=true

The final batch contains 5 events:
Event Processor for GatewaySender_ny_3: ParallelGatewaySenderQueue.peek final batch<PHONE_NUMBER> contains 5 events:
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=0;bucketId=48];action=0;operation=CREATE;region=/customer;key=0;value=Customer[id=0; name=name-0];creationTime=1588101080903;shadowKey=161;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=1;bucketId=48];action=0;operation=CREATE;region=/order;key=0-0;value=Order[id=0-0; customerId=0];creationTime=1588101080906;shadowKey=274;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=2;bucketId=48];action=0;operation=CREATE;region=/order;key=0-1;value=Order[id=0-1; customerId=0];creationTime=1588101080906;shadowKey=387;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=3;bucketId=48];action=0;operation=CREATE;region=/order;key=0-2;value=Order[id=0-2; customerId=0];creationTime=1588101080906;shadowKey=500;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]
	GatewaySenderEventImpl[id=EventID[id=23 bytes;threadID=0x10030|4;sequenceID=4;bucketId=48];action=0;operation=CREATE;region=/order;key=0-3;value=Order[id=0-3; customerId=0];creationTime=1588101080906;shadowKey=613;timeStamp=1588101080897;transactionId=TXId: <IP_ADDRESS>(ln-client:93385:loner):55648:ae6333c2:ln-client:1;isLastEventInTransaction=false]

When I start site 2, I see 3 batches received:
ServerConnection on port 5185 Thread 1: GatewayReceiverCommand.cmdExecute received batch 0 containing 5 events
ServerConnection on port 5185 Thread 1: GatewayReceiverCommand.cmdExecute received batch 1 containing 5 events
ServerConnection on port 5185 Thread 1: GatewayReceiverCommand.cmdExecute received batch 2 containing 1 events

If I do this:
* start site 1 with a sender with batch size = 5

* do a transaction with 1 customer and 10 orders

* don't start site 2 immediately

I see behavior like below:
The first call to peek is correct. It returns 11 events.
Since the batch can't be sent, the batch is recreated. This batch only contains 5 events.

I had not thought about this case.
I have pushed another commit that should solve the issue.

Methods named isGroupTransactionEvents might be better named shouldGroupTransactionEvents. Similarly, fields/variables named isGroupTransactionEvents might be better named simply groupTransactionEvents.

I agree. Instead of using shouldGroupTransactionEvents I will use mustGroupTransactionEvents which is a bit shorter.

Given this restriction:
Additionally, if serial gateway senders are used, they must be configured with just one dispatcher thread given that it would be impossible to fulfill the requirement if each event of a transaction is handled by a different dispatcher thread.
We should detect when a user attempts to configure dispatcherThreads > 1 with groupTransactionEvents = true and throw an Exception (and/or log an error) so users don't run with an invalid configuration.
Currently, users can configure this and may not notice these warnings:
Not able to retrieve all events for transaction TXId:

Given this restriction:
Additionally, if serial gateway senders are used, they must be configured with just one dispatcher thread given that it would be impossible to fulfill the requirement if each event of a transaction is handled by a different dispatcher thread.
We should detect when a user attempts to configure Serial Gateway Senders with dispatcherThreads > 1 and groupTransactionEvents = true and throw an Exception (and/or log an error) so users don't run with an invalid configuration.
Currently, users can configure this and may not notice these warnings:
Not able to retrieve all events for transaction TXId:

This is checked at gateway sender time creation and if the sender is serial, group-transaction-events is set to true and threads >1 an error is generated and the sender is not created.
The error message is:
"Serial Gateway Sender cannot be created with --group-transaction-events when --dispatcher-threads is greater than 1."

I've reviewed the doc components and I have some changes to propose. Most are concerned with grammar and format. The only technical one is to replace references to the is-parallel property with the parallel property.
I'm not sure how best to submit these, as it would be good to have them reviewed before checking them in. The most convenient method for me is the output of a git diff, so here goes. If you'd like me to incorporate the material in some other way (e.g. push my local commit to the feature branch) please let me know.
diff --git a/geode-docs/reference/topics/cache_xml.html.md.erb b/geode-docs/reference/topics/cache_xml.html.md.erb
index 4d9e859550..39e3d66962 100644
--- a/geode-docs/reference/topics/cache_xml.html.md.erb
+++ b/geode-docs/reference/topics/cache_xml.html.md.erb
@@ -298,8 +298,8 @@ Configures a gateway sender to distribute region events to another <%=vars.produ
group-transaction-events Boolean value to ensure that all the events of a transaction are sent in the same batch, i.e., they are never spread across different batches. -
Only allowed to be set on gateway senders with is-parallel attribute set to false and dispatcher-threads attribute equal to 1 or on gatewaysenders with is-parallel attribute set to true.
Note that in order to work for a transaction, the regions to which the transaction events belong must be replicated by the same set of senders with this flag enabled.
+
Only allowed to be set on gateway senders with the parallel attribute set to false and dispatcher-threads attribute equal to 1, or on gateway senders with the parallel attribute set to true.
+
Note: In order to work for a transaction, the regions to which the transaction events belong must be replicated by the same set of senders with this flag enabled.
false diff --git a/geode-docs/tools_modules/gfsh/command-pages/create.html.md.erb b/geode-docs/tools_modules/gfsh/command-pages/create.html.md.erb index 6140c6f79c..771412a96d 100644 --- a/geode-docs/tools_modules/gfsh/command-pages/create.html.md.erb +++ b/geode-docs/tools_modules/gfsh/command-pages/create.html.md.erb @@ -635,8 +635,8 @@ create gateway-sender --id=value --remote-distributed-system-id=value --group-transaction-events Boolean value to ensure that all the events of a transaction are sent in the same batch, i.e., they are never spread across different batches. -
Only allowed to be set on gateway senders with is-parallel attribute set to false and dispatcher-threads attribute equal to 1 or on gatewaysenders with is-parallel attribute set to true.
Note that in order to work for a transaction, the regions to which the transaction events belong must be replicated by the same set of senders with this flag enabled.
+
Only allowed to be set on gateway senders with the parallel attribute set to false and dispatcher-threads attribute equal to 1, or on gatewaysenders with the parallel attribute set to true.
+
Note: In order to work for a transaction, the regions to which the transaction events belong must be replicated by the same set of senders with this flag enabled.
false diff --git a/geode-docs/topologies_and_comm/multi_site_configuration/setting_up_a_multisite_system.html.md.erb b/geode-docs/topologies_and_comm/multi_site_configuration/setting_up_a_multisite_system.html.md.erb index 64a129009f..be8dfafeb9 100644 --- a/geode-docs/topologies_and_comm/multi_site_configuration/setting_up_a_multisite_system.html.md.erb +++ b/geode-docs/topologies_and_comm/multi_site_configuration/setting_up_a_multisite_system.html.md.erb @@ -171,7 +171,7 @@ When using a multi-site configuration, you choose which data regions to share be
* Regions using the same parallel gateway sender ID must be colocated.

-- If any gateway sender configured for the region has the group-transaction-events flag set to true, then the regions involved in transactions must all have the same gateway senders with this flag set to true configured. This requires careful configuration of regions with gateway-senders according to the transactions expected in the system.
+- If any gateway sender configured for the region has the group-transaction-events flag set to true, then the regions involved in transactions must all have the same gateway senders configured with this flag set to true. This requires careful configuration of regions with gateway senders according to the transactions expected in the system.
 **Example**:
 Assuming the following scenario:

@@ -185,14 +185,21 @@ When using a multi-site configuration, you choose which data regions to share be
 - Regions:

* ```
   - region1: gateway-sender-ids=sender1,sender2,sender4 type: partition, colocated-with: region2,region3
  ```

* ```
   - region2: gateway-sender-ids=sender1,sender2         type: partition, colocated with: region1,region3
  ```

* ```
   - region3: gateway-sender-ids=sender3                 type: partition, colocated with: region1,region2
  ```

* ```
   - region4: gateway-sender-ids=sender4                 type: replicated
  ```

* ```
   - region1: gateway-sender-ids=sender1,sender2,sender4<br />
  ```

* ```
       type: partition<br />
  ```

* ```
       colocated-with: region2,region3
  ```

* ```
   - region2: gateway-sender-ids=sender1,sender2<br />
  ```

* ```
       type: partition<br />
  ```

* ```
       colocated with: region1,region3
  ```

* ```
   - region3: gateway-sender-ids=sender3<br />
  ```

* ```
       type: partition<br />
  ```

* ```
       colocated with: region1,region2
  ```

* ```
   - region4: gateway-sender-ids=sender4<br />
  ```

* ```
       type: replicated
  ```

  * Events for the same transaction will be guaranteed to be sent in the same batch depending on the events involved in the transaction:

* ```
   - For transactions containing events for region1 and region2, it will be guaranteed that events for those transactions will be delivered in the same batch by senders1 and sender2.
  ```

* ```
   - For transactions containing events for region1 and region2, it will be guaranteed that events for those transactions will be delivered in the same batch by sender1 and sender2.
   - For transactions containing events for region1, region2 and region3, it will NOT be guaranteed that events for those transactions will be delivered in the same batch .
   - For transactions containing events for region3, it will be guaranteed that events for those transactions will be delivered in the same batch.
   - For transactions containing events for region4, it will NOT be guaranteed that events for those transactions will be delivered in the same batch.
  ```

diff --git a/geode-docs/topologies_and_comm/topology_concepts/multisite_overview.html.md.erb b/geode-docs/topologies_and_comm/topology_concepts/multisite_overview.html.md.erb
index 018715c84a..42044e1e91 100644
--- a/geode-docs/topologies_and_comm/topology_concepts/multisite_overview.html.md.erb
+++ b/geode-docs/topologies_and_comm/topology_concepts/multisite_overview.html.md.erb
@@ -33,7 +33,12 @@ Gateway senders and receivers are defined at startup in the member caches. A sit
Geode ensures that all copies of a region eventually reach a consistent state on all members and clients that host the region, including Geode members that distribute region events across a WAN.
-Events are sent over batches from gateway senders to receivers. In order to avoid possible long lasting inconsistencies due to a partial reception of the events belonging to a transaction after a network split, it is possible to configure gateway senders to prevent events belonging to the same transaction to be spread across different batches. It must be noted though, that this setting is only supported on serial senders with just one dispatcher thread or on parallel ones. Besides, the regions to which the transaction events belong must be replicated by the same set of gateway senders that have this setting enabled.
+Events are sent in batches from gateway senders to receivers. In order to avoid inconsistencies due
+to partial reception of the events belonging to a transaction, you can configure gateway senders to
+ensure that events belonging to the same transaction are sent together in the same batch.
+Note: This setting is supported only on serial senders with just one dispatcher
+thread, or on parallel senders. In addition, the regions to which the transaction events belong must
+be replicated by the same set of gateway senders that also have this setting enabled.

@davebarnes97 Thanks for the comments. In the pasted diff it is hard to get what the changes are. I would appreciate if you either send me the diff attached or if you prefer, that you push your changes to the feature branch.

@albertogpz I know the doc comments were extensive. I'll push the changes I'm sure about and dialog with you on points I'm unsure about. One item for you to verify: the references to the is-parallel attribute should be to the parallel attribute, yes?

@albertogpz I know the doc comments were extensive. I'll push the changes I'm sure about and dialog with you on points I'm unsure about. One item for you to verify: the references to the is-parallel attribute should be to the parallel attribute, yes?

Thanks, Dave.
Yes, you are right: the references to the is-parallel attribute should be to the parallel attribute

@albertogpz I know the doc comments were extensive. I'll push the changes I'm sure about and dialog with you on points I'm unsure about. One item for you to verify: the references to the is-parallel attribute should be to the parallel attribute, yes?

Thanks, Dave.
Yes, you are right: the references to the is-parallel attribute should be to the parallel attribute

The problem with the doc comments was not that they were extensive, but that they got modified when you pasted the diff here and the resulting test was not a valid diff I could apply.

The problem with the doc comments was not that they were extensive, but that they got modified when you pasted the diff here and the resulting test was not a valid diff I could apply.

I lack permissions to push my commit to your fork. It consists of four edited files. What would you suggest?

The problem with the doc comments was not that they were extensive, but that they got modified when you pasted the diff here and the resulting test was not a valid diff I could apply.

I lack permissions to push my commit to your fork. It consists of four edited files. What would you suggest?

You can send me the diff file attached to my e-mail address. I will apply the diff and then give comments if any here.

The problem with the doc comments was not that they were extensive, but that they got modified when you pasted the diff here and the resulting test was not a valid diff I could apply.

I lack permissions to push my commit to your fork. It consists of four edited files. What would you suggest?

You can send me the diff file attached to my e-mail address. I will apply the diff and then give comments if any here.

I just pushed a couple of commits.

One with your comments about the documentation: I accepted all of them, thanks a lot for them.
The second one merging the latest of development.


Migrate from qt4 to qt5 [WIP]

Motivation for this change
Qt4 is deprecated.
Mixxx can simply be recompiled for Qt5.
OpenMW is also updated from 0.42.0 to 0.43.0 with a slightly newer openscenegraph.
Vanilla openscenegraph is updated from 3.4.0 -> 3.4.1
If you guys think they should be split up into multiple different PRs for the sake of not changing too many things at the same time, let me know.
Cc: @abbradar @aszlig @cillianderoiste @7c6f434c
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

I'm willing to take on some Qt4 apps. List of files mentioning Qt4:

[ ] nixos/modules/i18n/input-method/uim.nix
[ ] nixos/modules/programs/ccache.nix
[ ] nixos/modules/programs/environment.nix
[ ] pkgs/applications/altcoins/bitcoin-unlimited.nix
[ ] pkgs/applications/altcoins/bitcoin-xt.nix
[ ] pkgs/applications/altcoins/btc1.nix
[ ] pkgs/applications/altcoins/dogecoin.nix
[ ] pkgs/applications/altcoins/freicoin.nix
[ ] pkgs/applications/altcoins/litecoin.nix
[ ] pkgs/applications/altcoins/memorycoin.nix
[ ] pkgs/applications/altcoins/namecoin.nix
[ ] pkgs/applications/altcoins/primecoin.nix
[ ] pkgs/applications/altcoins/zcash/default.nix
[ ] pkgs/applications/audio/cantata/default.nix
[ ] pkgs/applications/audio/clementine/default.nix
[ ] pkgs/applications/audio/faust/faust2alqt.nix
[ ] pkgs/applications/audio/faust/faust2jaqt.nix
[ ] pkgs/applications/audio/faust/faust2lv2.nix
[ ] pkgs/applications/audio/google-musicmanager/default.nix
[ ] pkgs/applications/audio/hydrogen/default.nix
[ ] pkgs/applications/audio/jackmix/default.nix
[ ] pkgs/applications/audio/kid3/default.nix
[ ] pkgs/applications/audio/mixxx/default.nix
[ ] pkgs/applications/audio/pianobooster/default.nix
[ ] pkgs/applications/audio/picard/default.nix
[ ] pkgs/applications/audio/projectm/default.nix
[ ] pkgs/applications/audio/puddletag/default.nix
[ ] pkgs/applications/audio/qmidiroute/default.nix
[ ] pkgs/applications/audio/qtractor/default.nix
[ ] pkgs/applications/audio/qtscrobbler/default.nix
[ ] pkgs/applications/audio/soundscape-renderer/default.nix
[ ] pkgs/applications/audio/tomahawk/default.nix
[ ] pkgs/applications/audio/vmpk/default.nix
[ ] pkgs/applications/display-managers/lightdm/default.nix
[ ] pkgs/applications/editors/texmacs/default.nix
[ ] pkgs/applications/editors/texmaker/default.nix
[ ] pkgs/applications/editors/texstudio/default.nix
[ ] pkgs/applications/editors/vim/qvim.nix
[ ] pkgs/applications/gis/qgis/default.nix
[ ] pkgs/applications/graphics/djview/default.nix
[ ] pkgs/applications/graphics/fontmatrix/default.nix
[ ] pkgs/applications/graphics/freecad/default.nix
[ ] pkgs/applications/graphics/ipe/default.nix
[ ] pkgs/applications/graphics/leocad/default.nix
[ ] pkgs/applications/graphics/openscad/default.nix
[ ] pkgs/applications/graphics/photivo/default.nix
[ ] pkgs/applications/graphics/qscreenshot/default.nix
[ ] pkgs/applications/graphics/qtpfsgui/default.nix
[ ] pkgs/applications/graphics/scantailor/default.nix
[ ] pkgs/applications/graphics/screencloud/default.nix
[ ] pkgs/applications/graphics/smartdeblur/default.nix
[ ] pkgs/applications/misc/bibletime/default.nix
[ ] pkgs/applications/misc/bitcoinarmory/default.nix
[ ] pkgs/applications/misc/confclerk/default.nix
[ ] pkgs/applications/misc/diffpdf/default.nix
[ ] pkgs/applications/misc/diffpdf/fix_path_poppler_qt4.patch
[ ] pkgs/applications/misc/doomseeker/default.nix
[ ] pkgs/applications/misc/electrum-dash/default.nix
[ ] pkgs/applications/misc/electrum-ltc/default.nix
[ ] pkgs/applications/misc/evopedia/default.nix
[ ] pkgs/applications/misc/fbreader/default.nix
[ ] pkgs/applications/misc/gnuradio/default.nix
[ ] pkgs/applications/misc/googleearth/default.nix
[ ] pkgs/applications/misc/keepassx/2.0.nix
[ ] pkgs/applications/misc/keepassx/default.nix
[ ] pkgs/applications/misc/librecad/default.nix
[ ] pkgs/applications/misc/multimon-ng/default.nix
[ ] pkgs/applications/misc/navipowm/default.nix
[ ] pkgs/applications/misc/navit/default.nix
[ ] pkgs/applications/misc/open-pdf-presenter/default.nix
[ ] pkgs/applications/misc/qlcplus/default.nix
[ ] pkgs/applications/misc/qmetro/default.nix
[ ] pkgs/applications/misc/qpdfview/default.nix
[ ] pkgs/applications/misc/rescuetime/default.nix
[ ] pkgs/applications/misc/sqliteman/default.nix
[ ] pkgs/applications/misc/tpmmanager/default.nix
[ ] pkgs/applications/misc/vym/default.nix
[ ] pkgs/applications/misc/xautoclick/default.nix
[ ] pkgs/applications/misc/xkblayout-state/default.nix
[ ] pkgs/applications/misc/yate/default.nix
[ ] pkgs/applications/misc/yubioath-desktop/default.nix
[ ] pkgs/applications/networking/browsers/arora/default.nix
[ ] pkgs/applications/networking/ike/default.nix
[ ] pkgs/applications/networking/instant-messengers/blink/default.nix
[ ] pkgs/applications/networking/instant-messengers/psi/default.nix
[ ] pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
[ ] pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix
[ ] pkgs/applications/networking/instant-messengers/vacuum/default.nix
[ ] pkgs/applications/networking/mumble/default.nix
[ ] pkgs/applications/networking/ostinato/default.nix
[ ] pkgs/applications/networking/p2p/eiskaltdcpp/default.nix
[ ] pkgs/applications/networking/remote/teamviewer/default.nix
[ ] pkgs/applications/networking/remote/x2goclient/default.nix
[ ] pkgs/applications/networking/sync/backintime/qt4.nix
[ ] pkgs/applications/office/libreoffice/default.nix
[ ] pkgs/applications/office/libreoffice/still.nix
[ ] pkgs/applications/office/qnotero/default.nix
[ ] pkgs/applications/office/scribus/default.nix
[ ] pkgs/applications/office/tagainijisho/default.nix
[ ] pkgs/applications/science/chemistry/avogadro/default.nix
[ ] pkgs/applications/science/electronics/qfsm/default.nix
[ ] pkgs/applications/science/electronics/qucs/default.nix
[ ] pkgs/applications/science/medicine/aliza/default.nix
[ ] pkgs/applications/science/misc/gplates/default.nix
[ ] pkgs/applications/science/misc/openmodelica/default.nix
[ ] pkgs/applications/science/misc/tulip/default.nix
[ ] pkgs/applications/science/misc/vite/default.nix
[ ] pkgs/applications/science/robotics/gazebo/default.nix
[ ] pkgs/applications/search/recoll/default.nix
[ ] pkgs/applications/version-management/git-and-tools/git-cola/default.nix
[ ] pkgs/applications/version-management/git-and-tools/svn2git-kde/default.nix
[ ] pkgs/applications/version-management/guitone/default.nix
[ ] pkgs/applications/version-management/tortoisehg/default.nix
[ ] pkgs/applications/video/avidemux/default.nix
[ ] pkgs/applications/video/avidemux/wrapper.nix
[ ] pkgs/applications/video/avxsynth/default.nix
[ ] pkgs/applications/video/clipgrab/default.nix
[ ] pkgs/applications/video/linuxstopmotion/default.nix
[ ] pkgs/applications/video/makemkv/default.nix
[ ] pkgs/applications/video/minitube/default.nix
[ ] pkgs/applications/video/mythtv/default.nix
[ ] pkgs/applications/video/natron/default.nix
[ ] pkgs/applications/video/qgifer/default.nix
[ ] pkgs/applications/video/recordmydesktop/qt.nix
[ ] pkgs/applications/video/simplescreenrecorder/default.nix
[ ] pkgs/applications/video/vlc/default.nix
[ ] pkgs/development/compilers/eql/default.nix
[ ] pkgs/development/libraries/aqbanking/gwenhywfar.nix
[ ] pkgs/development/libraries/attica/default.nix
[ ] pkgs/development/libraries/audio/suil/default.nix
[ ] pkgs/development/libraries/avahi/default.nix
[ ] pkgs/development/libraries/dssi/default.nix
[ ] pkgs/development/libraries/grantlee/default.nix
[ ] pkgs/development/libraries/gstreamer/legacy/qt-gstreamer/default.nix
[ ] pkgs/development/libraries/gstreamer/qt-gstreamer/default.nix
[ ] pkgs/development/libraries/libbluedevil/default.nix
[ ] pkgs/development/libraries/libdbusmenu-qt/default.nix
[ ] pkgs/development/libraries/libechonest/default.nix
[ ] pkgs/development/libraries/libjreen/default.nix
[ ] pkgs/development/libraries/liblastfm/default.nix
[ ] pkgs/development/libraries/libqglviewer/default.nix
[ ] pkgs/development/libraries/ntrack/default.nix
[ ] pkgs/development/libraries/opencascade/default.nix
[ ] pkgs/development/libraries/openscenegraph/default.nix
[ ] pkgs/development/libraries/phonon/backends/gstreamer.nix
[ ] pkgs/development/libraries/phonon/backends/vlc.nix
[ ] pkgs/development/libraries/phonon/default.nix
[ ] pkgs/development/libraries/physics/geant4/default.nix
[ ] pkgs/development/libraries/polkit-qt-1/qt-4.nix
[ ] pkgs/development/libraries/poppler/default.nix
[ ] pkgs/development/libraries/prison/default.nix
[ ] pkgs/development/libraries/qimageblitz/default.nix
[ ] pkgs/development/libraries/qjson/default.nix
[ ] pkgs/development/libraries/qscintilla/default.nix
[ ] pkgs/development/libraries/qt-4.x/4.8/default.nix
[ ] pkgs/development/libraries/qt-4.x/4.8/qmake-hook.sh
[ ] pkgs/development/libraries/qt-5/modules/qtbase.nix
[ ] pkgs/development/libraries/qtkeychain/default.nix
[ ] pkgs/development/libraries/qt-mobility/default.nix
[ ] pkgs/development/libraries/qtscriptgenerator/default.nix
[ ] pkgs/development/libraries/qwt/6_qt4.nix
[ ] pkgs/development/libraries/qwt/default.nix
[ ] pkgs/development/libraries/qxt/default.nix
[ ] pkgs/development/libraries/soprano/default.nix
[ ] pkgs/development/libraries/soqt/default.nix
[ ] pkgs/development/libraries/strigi/default.nix
[ ] pkgs/development/libraries/torch/default.nix
[ ] pkgs/development/libraries/wt/default.nix
[ ] pkgs/development/python-modules/matplotlib/default.nix
[ ] pkgs/development/python-modules/pykde4/default.nix
[ ] pkgs/development/python-modules/pykde4/kdelibs.nix
[ ] pkgs/development/python-modules/pyqt/4.x.nix
[ ] pkgs/development/python-modules/pyside/apiextractor.nix
[ ] pkgs/development/python-modules/pyside/default.nix
[ ] pkgs/development/python-modules/pyside/generatorrunner.nix
[ ] pkgs/development/python-modules/pyside/shiboken.nix
[ ] pkgs/development/python-modules/pyside/tools.nix
[ ] pkgs/development/r-modules/default.nix
[ ] pkgs/development/ruby-modules/gem-config/default.nix
[ ] pkgs/development/tools/analysis/snowman/default.nix
[ ] pkgs/development/tools/analysis/valkyrie/default.nix
[ ] pkgs/development/tools/build-managers/cmake/2.8.nix
[ ] pkgs/development/tools/build-managers/cmake/default.nix
[ ] pkgs/development/tools/documentation/doxygen/default.nix
[ ] pkgs/development/tools/misc/automoc4/default.nix
[ ] pkgs/development/tools/misc/gede/default.nix
[ ] pkgs/development/tools/misc/xxdiff/default.nix
[ ] pkgs/development/tools/profiling/oprofile/default.nix
[ ] pkgs/games/anki/default.nix
[ ] pkgs/games/anki/fix-paths.patch
[ ] pkgs/games/gambatte/default.nix
[ ] pkgs/games/hedgewars/default.nix
[ ] pkgs/games/holdingnuts/default.nix
[ ] pkgs/games/mnemosyne/default.nix
[ ] pkgs/games/openmw/default.nix
[ ] pkgs/games/pokerth/default.nix
[ ] pkgs/games/sdlmame/default.nix
[ ] pkgs/misc/drivers/hplip/3.16.11.nix
[ ] pkgs/misc/frescobaldi/default.nix
[ ] pkgs/misc/gnash/default.nix
[ ] pkgs/os-specific/linux/ffado/default.nix
[ ] pkgs/os-specific/linux/i7z/default.nix
[ ] pkgs/os-specific/linux/wpa_supplicant/gui.nix
[ ] pkgs/os-specific/windows/jom/default.nix
[ ] pkgs/tools/audio/acoustid-fingerprinter/default.nix
[ ] pkgs/tools/cd-dvd/unetbootin/default.nix
[ ] pkgs/tools/graphics/nifskope/default.nix
[ ] pkgs/tools/graphics/pfstools/default.nix
[ ] pkgs/tools/graphics/wkhtmltopdf/default.nix
[ ] pkgs/tools/graphics/zbar/default.nix
[ ] pkgs/tools/inputmethods/fcitx-engines/fcitx-libpinyin/default.nix
[ ] pkgs/tools/inputmethods/fcitx/unwrapped.nix
[ ] pkgs/tools/inputmethods/ibus/ibus-qt.nix
[ ] pkgs/tools/inputmethods/touchegg/default.nix
[ ] pkgs/tools/inputmethods/uim/default.nix
[ ] pkgs/tools/misc/apt-offline/default.nix
[ ] pkgs/tools/misc/qjoypad/default.nix
[ ] pkgs/tools/misc/yubikey-personalization-gui/default.nix
[ ] pkgs/tools/security/meo/default.nix
[ ] pkgs/tools/security/omapd/default.nix
[ ] pkgs/tools/text/qshowdiff/default.nix
[ ] pkgs/top-level/all-packages.nix
[ ] pkgs/top-level/python-packages.nix

git grep qt4 | cut -d: -f1 | sort | uniq | awk '{ print "* [ ] " $0; }'

223 total.
I think we already have Qt5 version of VLC in libsForQt5.vlc attribute, but we might want to drop Qt4 version.
 pkgs/tools/inputmethods/* will all be dropped when Qt4 is removed entirely, and will also remove Qt4 from closure of everyone who uses non-alphabetic writing systems.
LibreOffice will probably land Qt5 in February: https://www.phoronix.com/scan.php?page=news_item&px=LibreOffice-VCL-Qt5

It is fine to build applications that support Qt 5 with Qt 5, but is there any reason to stop building applications with Qt 4 that don't (e.g. i7z)? Qt 4 works well and is not going to be removed in any near future.

@yegortimoshenko Wouldnt it be better to create a tracking issue with that list? I doubt that all of those packages will be handled by this PR.
@orivej I agree with you. I think it may be worth revisiting that question once there are only a few packages depending on Qt4 but for now I don't see any reason to drop Qt4 from packages not supporting Qt5.

@peterhoeg The fork of qjoypad that you have found is pretty good, but its UI is a bit deficient compared to its qt4 ancestor. I'd like these pull requests to be merged before we switch: https://github.com/panzi/qjoypad/pull/17 and https://github.com/panzi/qjoypad/pull/18.

Sounds reasonable for xxdiff, for openscenegraph I am not sure whether flightgear or speed_dreams care about Qt support in the library. Hopefully they use as much as openmw, though.

@orivej: i7z-gui segfaults for me, so I too think we should drop it, if it doesn't work for anyone:
$ i7z-gui
i7z DEBUG: i7z version: svn-r77-(20-Nov-2011)
i7z DEBUG: Found Intel Processor
i7z DEBUG:    Stepping 7
i7z DEBUG:    Model a
i7z DEBUG:    Family 6
i7z DEBUG:    Processor Type 0
i7z DEBUG:    Extended Model 2
i7z DEBUG: msr = Model Specific Register
segmentation fault

But in other cases, patching application to support Qt5 is preferable.

@yegortimoshenko Works fine for me. Might be depending on the hardware?

Works for me too. It must be run as root, but when it isn't it doesn't segfault, it prints:
i7z DEBUG: i7z version: svn-r77-(20-Nov-2011)
i7z DEBUG: Found Intel Processor
i7z DEBUG:    Stepping 3
i7z DEBUG:    Model e
i7z DEBUG:    Family 6
i7z DEBUG:    Processor Type 0
i7z DEBUG:    Extended Model 4
i7z DEBUG: msr = Model Specific Register
i7z DEBUG: Unknown processor, not exactly based on Nehalem, Sandy bridge or Ivy Bridge
i7z DEBUG: msr device files exist /dev/cpu/*/msr
i7z DEBUG: You DONOT have write permissions to msr device files
i7z DEBUG: A solution is to run this program as root

Interesting, i7z doesn't segfault for me (output identical to https://github.com/NixOS/nixpkgs/pull/33239#issuecomment-354614219) but i7z-gui does.

This pull request has been mentioned on Nix community. There might be relevant details there:
https://discourse.nixos.org/t/bump-openmw-0-44-0-and-ported-to-qt5/2121/1

Are there any updates on this pull request, please?

No longer relevant.


MINOR: Update ZooKeeper to 3.5.5

3.5.5 is now stable:
https://zookeeper.apache.org/releases.html
Committer Checklist (excluded from commit message)

[ ] Verify design and implementation
[ ] Verify test coverage and CI build status
[ ] Verify documentation (including upgrade notes)

Fixed an issue that was causing system tests to fail and launched another build, which is looking good so far:
https://jenkins.confluent.io/job/system-test-kafka-branch-builder/2772/console

There were 10 system tests failures. Fixed an additional issue and started another run:
https://jenkins.confluent.io/job/system-test-kafka-branch-builder/2779/

2 variations of ConnectDistributedTest failed in the latest run. Will investigate if it's related.

retest this please

The org.apache.kafka.connect.integration.ExampleConnectIntegrationTest.testSourceConnector test failed on both JDK 11 builds with the error of
org.apache.kafka.connect.errors.DataException: Insufficient records committed by connector simple-conn in 15000 millis. Records expected=2000, actual=1112
	at org.apache.kafka.connect.integration.ConnectorHandle.awaitCommits(ConnectorHandle.java:188)
	at org.apache.kafka.connect.integration.ExampleConnectIntegrationTest.testSourceConnector(ExampleConnectIntegrationTest.java:181)

This isn't the initial connect test that failed, right?
For completeness, the JDK 8 build failed the kafka.admin.LeaderElectionCommandTest.testTopicPartition test with
kafka.common.AdminCommandFailedException: Timeout waiting for election results
	at kafka.admin.LeaderElectionCommand$.electLeaders(LeaderElectionCommand.scala:134)
	at kafka.admin.LeaderElectionCommand$.run(LeaderElectionCommand.scala:89)
	at kafka.admin.LeaderElectionCommand$.main(LeaderElectionCommand.scala:42)
	at kafka.admin.LeaderElectionCommandTest$$anonfun$testTopicPartition$1.apply(LeaderElectionCommandTest.scala:121)
	at kafka.admin.LeaderElectionCommandTest$$anonfun$testTopicPartition$1.apply(LeaderElectionCommandTest.scala:104)
	at kafka.utils.TestUtils$.resource(TestUtils.scala:1534)
	at kafka.admin.LeaderElectionCommandTest.testTopicPartition(LeaderElectionCommandTest.scala:104)

which seems more like a flake

@stanislavkozlovski the JUnit failures are all flakes. The system test failures are not yet clear.

The Connect system test that failed also looks like a flake, trunk also fails sometimes:
http://confluent-kafka-system-test-results.s3-us-west-2.amazonaws.com/2019-07-05--001.1562343232--confluentinc--master--8dc8e6d/report.html

retest this please

I reran the connect system tests a few times and the failures are flaky (i.e. they pass sometimes). So, I think this PR is ready for review.


[doc][connector][hive] Add hive chinese doc

Purpose of this pull request
Add hive chinese doc
question:
there is an update log at the end of the document, do we need to delete it because it is already a record from 2022
Does this PR introduce any user-facing change?

How was this patch tested?

Check list

[ ] If any new Jar binary package adding in your PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/seatunnel/tree/dev/docs
[ ] If you are contributing the connector code, please check that the following files are updated:

Update plugin-mapping.properties and add new connector information in it
Update the pom file of seatunnel-dist
Add ci label in label-scope-conf
Add e2e testcase in seatunnel-e2e
Update connector plugin_config

[ ] Update the release-note.

there is an update log at the end of the document, do we need to delete it because it is already a record from 2022

+1. cc @hailin0 @TyrantLucifer


Network

Need to check for network connection. Right now it crashes without data.

Project no longer supported


Big Mutable Strings

Can mutable string added to FastUtils under the same license.

dsiutils is doubly licenced, there's no need for that.

I missed the fact it has been re-licensed. Can the source be hosted on GitHub as well?

https://github.com/vigna/dsiutils

OK Great. I guess you might need to update the website with the links as it still mentions downloading source as tarballs.

Sorry I missed it. The 1st links is the GitHub link.

No, I just updated it LOL. You made me notice it was missing.

Perhaps you can update this also "which are gathered for your convenience in a tarball." to "which are gathered for your convenience in a tarball and hosted in GitHub." as body of the text is what one looks at 1st. Also source and binary can link to GitHub releases so  it is not state. GitHub release is 8.5.2 and the download in the website is 2.6.17.

The download version are not consistent for other projects also. E.g. webgraph 3.6.10 vs 3.6.8.

Also some projects e.g. MG4J  do not have a GitHub link. Also they seam to be still LGPL (hopefully this can be changed).

BUbiNG link in http://vigna.di.unimi.it/software.php is also broken.

You're right, there's too much duplication of information. I will stop distributing the tarballs, I think nobody is using them.
MG4J presently is not on Github. Maybe in the future, it takes time...
Thank you for the reports.


regenerate gradle lockfiles & roll pub packages

Example failing devicelab build https://ci.chromium.org/ui/p/flutter/builders/prod/Linux_pixel_7pro platform_views_scroll_perf__timeline_summary/2980/overview
Fixes https://github.com/flutter/flutter/issues/145561

This previously landed in https://github.com/flutter/flutter/pull/145509 but was reverted in https://github.com/flutter/flutter/pull/145550

The generate_gradle_lockfiles.dart script is poorly named, as it also re-generates all the gradle files. That is going to make one of the tests here fail deprecated_gradle_settings_test.
I think the answer isn't to change the test but to add a flag to the script to allow running it in a mode where we don't re-generate the gradle files themselves (I don't see a reason why the pub roller bot should need to re generate the gradle files themselves for each roll)

Looks like the gradle_deprecated_settings test is still failing. I think the issue here is that generate gradle files -> generate lockfiles -> revert grade file generation is not exactly the same as just generate lockfiles.
I was able to reproduce the error with those steps, but it built successfully if I instead started on a new branch and just did flutter update-packages --force-upgrade followed by running the lockfile generation script with the --no-gradle-generation flag

Thanks

Superceded by: https://github.com/flutter/flutter/pull/145727


Feature request: Add Parse method

Something like:
public static Period Parse(string name) => TryParse(name, out var value) ? value : ThrowValueNotFound(name);
public static Period Parse(string name, bool ignoreCase) => TryParse(name, ignoreCase, out var value) ? value : ThrowValueNotFound(name);
private static Period ThrowValueNotFound(string name) => throw new ArgumentException($"Requested value '${name}' was not found.");

This would be a great addition.


Can't pass level 13

I have did git stash, but it can not clean the working directory.
BTW: my git version is 2.8.1, and i have test git stash on other repos, it works fine.

Thanks for the report. I can't replicate this. Could you please provide a log of your terminal output when running git stash?

@Gazler
After i excuted git stash, it's output was normal!
git stash
#------------
Saved working directory and index state WIP on master: 0206059 Add some lyrics
HEAD is now at 0206059 Add some lyrics
#--------------
git status
#--------------
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   lyrics.txt

no changes added to commit (use "git add" and/or "git commit -a")
#-------------------
git log
#------------------
commit 02060592b31c9e12ffe1b282addf9537c5ef8e1f
Author: Anton Vasin<EMAIL_ADDRESS>Date:   Mon Dec 3 11:13:07 2012 +0400

it's too weird

I found this issue too, I fixed this problem by using git init before git stash

@zjuchenyuan ,Thanks for your solution. It works for me, but this error is still there, i just can't figure out why the git stash not clear the staging area.[git init just reinit repo]


Incorrect type definition for Tokenizers.Tokenizer.t()

https://github.com/elixir-nx/tokenizers/blob/0190d0a4b80604af7d7a35dbb7544a886d9e2b02/lib/tokenizers/tokenizer.ex#L17
Dialyzer is unhappy about the return results when getting a tokenizer, because the above type definition is incorrect. For example, if I build this for the "openai-gpt" tokenizer, the struct looks like:
{:ok,
 #Tokenizers.Tokenizer<[
   vocab_size: 40478,
   continuing_subword_prefix: nil,
   dropout: nil,
   end_of_word_suffix: "</w>",
   fuse_unk: false,
   model_type: "bpe",
   unk_token: "<unk>"
 ]>}

Alternatively, I am a dumbass and had the model specified using single-quotes. 🤦🏻  Sorry for the noise.


Windows 8 Usage: All 3 EFI trickes needed?

Hi,
First of all a big thank you for the effort you put into this. I have a question on whether the tricks needed to get this working on Windows only.
I have a Macbook Pro 11,3 model (mid 2014), but I prefer to work under Windows only (I don't even have OS X or another unix distro installed on my machine). Is it possible to get this to work with just using the first trick in the list (the apple_set_os.efi), or would I also need the last two (patched GRUB and kernel) to get this to work?
If your answer is yes to the question above, can rEFIt be used to place the .efi binary at the correct location on the EFI partition through Windows?
Sorry to post this as an "issue" on your project.
Thanks in advance!

Hi!
Absolutely no problem for posting this as an issue.
You only need to apply one of the hacks and I also would recommend using apple_set_os.efi.
Yes, that is exactly the purpose of the efi binary. I haven't tested rEFI but I was successful with rEFInd.
You can install it like described here: http://www.rodsbooks.com/refind/installing.html#windows
Then you can just copy apple_set_os.efi to S:\custom\ and you should be able to access the Intel GPU.
Greetings

Alright! Thank you for your reply. I will try this in a few weeks (currently have a few deadlines, so I'm not willing to risk fiddling with the EFI partition and needing to recover the partition tables or do a complete restore of my system if it all goes sideways).
I will also take a look at your link for rEFInd. rEFIt was just the first result I found when looking for accessing the EFI partition on a MacBook.
Thanks!

Hello,
I'm also trying to get gpu-switch to work on my MacBook Pro 11,3. I have Windows 8.1 64bit installed using BootCamp along side OS X 10.10.3.
I installed rEFInd and placed apple_set_os.efi in EFI/custom on the ESP partition. rEFInd starts at boot and I can select apple_set_os. After a short flicker I then select Windows. It boots (boot animation) but I end up with a pretty much black login screen. Eyery now and then the shutdown button is shortly visible in white. I managed to install the Intel driver by booting into safe mode. It's still not working though.
What am I missing?
Thanks in advance

Hello!
I think the black screen is related to some weirdness of the Nvidia driver. At the moment I don't have my Windows hard drive with me and can't test it myself.
Maybe @ah- can help you.
You could also try to get some assistance here:
http://forum.techinferno.com/implementation-guides-apple/8717-[guide]-enabling-intel-iris-pro-hd5200-win8-1-15-macbook-pro-gt750m-1.html
or
https://www.reddit.com/r/apple/comments/354vw8/howto_enabling_the_intel_iris_in_bootcamp_650m750m/
Greetings
Bruno

I have been successful in activating the Iris Pro integrated card, but I run into the problem that, when I have both the integrated and dedicated card active, the laptop will boot with a black screen with some flashes of a few login icons (most noticeably the ethernet icon).
I doubt this has anything directly to do with the gpu-switch application, but is there anything that needs to be done specifically to get both working at the same time? I can get them active separately, but it would be nice to have them both working at the same time.

@juniordiscart: I tried it again today after updating to Windows 10, and it seems the black screen problem is now gone. Not sure if it was the reinstallation of everything though, but no more issues with that.

@ah- I tried to follow the procedure again a few weeks (or maybe a month ago) and got it to work as well: I could have the iGPU and dGPU active at the same time, but I had a constant load of about 10% on the system, from the System process. Did you experience this as well?

@juniordiscart yeah, I saw the same thing, not sure what caused that. Haven't investigated that yet.

@ah- Just to further add additional details, my previous comment was regarding Windows 8.1. Now I'm running Windows 10, and experiencing the same problems. Some one on Tech Inferno mentioned that putting the Macbook to sleep and then waking it again resolves the problem. I can confirm this as well. Most notably, I also see a large amount of System Interrupts in the processes. I assume it is related to the high System process CPU usage. So the sleep state changes something that causes the System provess to exhibit normal behaviour (I assume).


Add dockerscript link to README.md

Issue #, if available:
#576
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Codecov Report

Merging #577 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #577   +/-   ##
=======================================
  Coverage   64.60%   64.60%
=======================================
  Files          32       32
  Lines        1404     1404
=======================================
  Hits          907      907
  Misses        497      497

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0fb9254...812c2c5. Read the comment docs.

Codecov Report

Merging #577 (0c89f54) into master (af0b1b4) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #577   +/-   ##
=======================================
  Coverage   67.84%   67.84%
=======================================
  Files          32       32
  Lines        1474     1474
=======================================
  Hits         1000     1000
  Misses        474      474

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update af0b1b4...0c89f54. Read the comment docs.


[BUG] Links Are not working in footer

Description of the bug
Links of social media are not working to
Please add screenshots (if applicable)
WebX.webm
Add any other context about the problem here
on clicking there should be a cursor and redirect to social media ,
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hi @himanshu1221 ! Thanks for the issue, well spotted! star
Links are:

Github: https://github.com/WebXDAO
Twitter: https://twitter.com/WebXDAO
Discord: https://discord.gg/JaJngac9
Linkedin:  https://www.linkedin.com/company/76098793

Thanks for reviewing my issue I will soon make a PR


collection of patches others might find useful

Closing this for now, as we brought some in and made a million other changes recently. If there's stuff you still need, feel free to re-open.


Allow time parameter for deleting empty projects and projects

https://github.com/blackducksoftware/hub-rest-api-python/blob/master/examples/delete_empty_projects_and_versions.py just seems to directly delete all empty projects and all empty versions in any projects.
Request to add parameter for its execution to provide number of days since that particular project or version was created.
Eg: Delete all projects and all versions in all projects that are empty, and created 30 days before or earlier.
https://github.com/blackducksoftware/hub-rest-api-python/blob/master/examples/delete_empty_projects.py does allow a time parameter. If similar logic to provide time were provided for versions also, it would be helpful.
It is better if the time parameter is in the form of number of days since creation, rather than in date format (YYYY-MM-DD).
Please see if possible to implement this. Would be helpful for multiple customers.

Thanks for the feedback. The examples are just that and are provided as-is. You're welcome to fork and change however you want OR make a PR to incorporate some additional capability like this. I'm sure it would be quite possible to implement what you've asked for and one of the maintainers/contributors may be able to get to it sooner rather than later, but if you don't want to wait we welcome PR's so feel free to suggest something.


chore: Update from _rust template

Pull Request Test Coverage Report for Build<PHONE_NUMBER>0
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 32.143%

Totals

Change from base Build<PHONE_NUMBER>8:
0.0%

Covered Lines:
9

Relevant Lines:
28

💛  - Coveralls


Inconsistent html tags for unordered list items on incremental slide

I've just noticed that the html produced for
 items differs between slides when using incremental markers.
Some background
I'm trying to change the spacing between the preceding paragraph and the first list item for tight lists, (i.e. when there is no blank line between the paragraph and list items), e.g.:
A list:
- list item
- list item 2

As far as I can tell can be achieved with this CSS:
p { margin-block-end: 0.2em; }
ul { margin-block-start: 0.2em; }

This works fine, and handles both tight lists and 'wide' lists (with blank lines between list items) as expected:

no blank lines
with blank lines

But when using blank lines between list items, and an incremental marker, e.g.
A list

- list item

--
- list item 2

There is a clear shift in position between the first and second slide, as illustrated below:

first slide
second slide

Investigating the generated HTML
I've had a go at investigating what's going on, and I think this is due to difference in the html produced for the first and second slides. In more detail:
With this markdown (tight list):
A list:
- list item
- list item 2

I get the following html (using Google Chrome's inspect functionality):

list item

list item 2

For 'wide' list, I can use this markdown:
A list

- list item

- list item 2

which produces this html:

list item

list item 2

The difference here is that the contents of the list items are now encased in
 tags. So far so good.

The problem is when adding an incremental marker in between the two list items. With this markdown:
A list

- list item

--
- list item 2

I get this for the first slide:

list item

but this on the second slide:

list item

list item 2

Note that on the first slide, the first list item is not encased in a
 tag, while on the second slide, that same list item now has a
 tag.

This problem only occurs with the incremental marker, and is only an issue because that first slide lacks the enclosing
 tags around the list item contents. And the issue only manifests with modified CSS styling...
I'd be willing to dig around to figure out where the issue is, but I've no experience with JavaScript, and no idea where to start looking... Any pointers (or even better, solutions!) would be greatly appreciated.

OK, I've had a look into this, and I can see it's not going to be easy to fix...
With this input:
A list

- list item

--
- list item 2

For the first slide, the input to Lexer.prototype.token() (which is in the node_modules/marked/lib/marked.js, line 146), is:
"A list\n\n- list item\n"

So no sign of the second list item (as expected). But also no context to determine whether the list is tight or loose, since that depends on the presence of a blank line between list items...
Regardless, the problem arises from the marked module, so I'll close this PR and chase up on the marked repo.
On that note, I can see that #694 includes using a more recent version of marked, I'll see if that already fixes it...


describe how pathway and GO enrichment are calculated in batch search

@elipapa commented on Fri Jul 06 2018
We need to give more detail on the Batch Search results page about how pathway and GO enrichment are calculated

@deniseOme commented on Fri Jul 06 2018
That's in my TODO list in addition to add info on chemical probes (although a blog is coming by by @MichaelaEBI), and include links to youtube video when appropriate. We might be able to try to link out to our blog posts from docs as well.

@elipapa commented on Fri Jul 06 2018
was mapping some of https://docs.google.com/spreadsheets/d/1gvS14oUAWEvnz61ELbe73L9PseeXdIBRrWxsoVpBlew/edit#gid=1901934433 in github

Sadly this has not been addressed, only upon request through support email when users ask for this information.
If a help page describing these steps is put in place in the future, please go to the 'Sent' folder in the Office365 space for support email. There you will find the stept-by-step instructions sent to the user and can use that to start drafting the help doc. Please note some changes may have to be included as OmniPath calls seem no longer work in production and may have been replaced in the new-generation UI of the Platform.

@deniseOme is the length of the explanation suitable to be posted in this ticket? Alternatively could you paste it into a Google doc? I am concerned that we may not be able to extract the information from Office365 for different reasons.

This work will soon be deprecated by the React application. No action is expected

This work will soon be deprecated by the React application. No action is expected


Spec fix

Fixes spec files to align with latest cf-deployment. Need to figure out what needs to be done about adapter/syslogger instance being merged into log_api.
https://github.com/genesis-community/cf-genesis-kit/commit/dd90fa710b12f876af256ec5b746fea40b8fe015

Removed adapter/syslogger references that were no longer needed.


UChar and UShort textures as Normalized Float

JIRA ISSUE : SWDEV-151668
Issue when reading UChar and UShort textures as Normalized Float
signed/unsigned char,short range is remapped to 0.f->1.f on texture read

@ansurya You will have to modify other texture read functions as well.


maintained?

hi is Nodegit maintained?

+1

Yes, although we've been a less active lately than one would hope.

Hey! We all were buckled down for a bit focusing on getting GitKraken 2.0 going.
We now resume our regularly scheduled program.


Fix div alignment.

change the alignment to 'block'

@samussiah messing with css for showing/hiding charts, so fixed this as well.

Functional Test: Current version lines up vertically and looks as expected
Pass


Option for restarting strong branching if child is infeasible

Add option: strong_restart::Bool
If set to true strong branching will be restarted if child is infeasible.

bound of that variable is updated for all possible branches

Codecov Report

Merging #7 into master will decrease coverage by 0.48%.
The diff coverage is 93.13%.

@@            Coverage Diff             @@
##           master       #7      +/-   ##
==========================================
- Coverage   95.88%   95.39%   -0.49%
==========================================
  Files           8        8
  Lines         826      891      +65
==========================================
+ Hits          792      850      +58
- Misses         34       41       +7

Impacted Files
Coverage Δ

src/solver.jl
100% <ø> (ø)
:arrow_up:

src/model.jl
100% <ø> (ø)
:arrow_up:

src/MINLPBnB.jl
100% <ø> (ø)
:arrow_up:

test/basic.jl
100% <100%> (ø)
:arrow_up:

test/power_models_acp.jl
100% <100%> (ø)
:arrow_up:

test/power_models_socwr.jl
100% <100%> (ø)
:arrow_up:

src/BnBTree.jl
90.3% <89.39%> (-0.84%)
:arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update a023ac3...16c9a7b. Read the comment docs.


timings for copies on miniqmc aren't consistent between profile and trace

the profile for miniqmc's OpenMP TARGET offloading says that copies are 98% of the GPU operations and that kernel ops are 1.8%. the trace says that kernel ops and copies are both 30-40%.

the problem was that copy times overlapped. this was because copy start was akin to copy submit. this has been fixed in ROCm 5.2.


Reindexing job reported as completed, even though it didn't process a single record.

Describe the bug
While running the reindex job for newly defined custom search parameter, FHIR Server reports completion, even though no record is indexed (neither can be found using the new search param).
Hosting details:
The FHIR Server is hosted inside the Azure Container App, with assigned resources:
1 CPU, 2 GB RAM
The data instance sizes:
The entire Resources table is ~60 GB, 978 676 rows
The biggest Resource row (measured as datalength(rawresource)) is 5 MB, average is 58 KB
FHIR Version?
R4B, [3.4.342]
Data provider?
SQL Server
To Reproduce
Steps to reproduce the behaviour:

Set up the custom search parameter running the command:

curl --location --request PUT "http://${FHIR_HOST}/SearchParameter/datapharm-product-family" \
--header 'Content-Type: application/json' \
--data-raw '{
 "resourceType" : "SearchParameter",
 "id": "datapharm-product-family",
 "url" : "https://medicines.org.uk/productFamily",
 "version" : "0.0.1",
 "name" : "datapharm-product-family",
 "status" : "active",
 "date" : "2023-02-01",
 "publisher" : "Datapharm Ltd",
 "contact" : [
   {
     "telecom" : [
       {
         "system" : "other",
         "value" : "https://www.datapharm.com/"
       }
     ]
   }
 ],
 "description" : "Searching by product family",
 "jurisdiction" : [
   {
     "coding" : [
       {
         "system" : "https://medicines.org.uk/productFamily",
         "code" : "UK",
         "display" : "United Kingdom"
       }
     ]
   }
 ],
 "code" : "datapharm-product-family",
 "base" : [
   "MedicinalProductDefinition"
 ],
 "type" : "token",
 "expression" : "MedicinalProductDefinition.extension.where(url='\''https://medicines.org.uk/productFamily'\'').value"
}'

Run the reindexing Job

{
    "resourceType": "Parameters",
    "parameter": [
           {
            "name": "targetSearchParameterTypes",
            "valueString": "https://medicines.org.uk/productFamily"
          }
      ]
}

Check the results by calling GET /_operations/reindex/<reindex job id>

Expected behavior
The result is
...
{
    {
       "name":"totalResourcesToReindex",
       "valueDecimal": 18514.0
    },
    {
       "name":"resourcesSuccessfullyReindexed",
       "valueDecimal": 18514.0
    },
    {
       "name":"progress",
       "valueDecimal": 100.0
    },
    {
       "name":"status",
       "valueString": "Completed"
    }
}
...

and attempts of searching by that parameters succeed.
Actual behavior
The result is
...
{
    {
       "name":"totalResourcesToReindex",
       "valueDecimal": 18514.0
    },
    {
       "name":"resourcesSuccessfullyReindexed",
       "valueDecimal": 0.0
    },
    {
       "name":"progress",
       "valueDecimal": 0.0
    },
    {
       "name":"status",
       "valueString": "Completed"
    }
}
...

and attempts of searching by that parameter fail.

Applying maximumNumberOfResourcesPerQuery:
In addition, we were experimenting with adding the parameter maximumNumberOfResourcesPerQuery while running the Reindexing Job. That partially deals with the problem, but sometimes it indexes only 99% of the records.
ie. for Reindex Job defined like that:
{
    "resourceType": "Parameters",
    "parameter": [
           {
            "name": "targetSearchParameterTypes",
            "valueString": "https://medicines.org.uk/productFamily"
          } ,
          {
             "name": "maximumNumberOfResourcesPerQuery",
             "valueInteger": "5000"
         }
      ]
}

we got that response
...
{
    {
       "name":"totalResourcesToReindex",
       "valueDecimal": 18514.0
    },
    {
       "name":"resourcesSuccessfullyReindexed",
       "valueDecimal": 18513.0
    },
    {
       "name":"progress",
       "valueDecimal": 99.99
    },
    {
       "name":"status",
       "valueString": "Completed"
    }
}
...

@rafalbroll-datapharm - Are you provisioned on Cosmos DB/ SQL persistence layer?

@rafalbroll-datapharm - Are you provisioned on Cosmos DB/ SQL persistence layer?

It's the SQL Server.

@rafalbroll-datapharm I am facing the same issue with Azure FHIR Service with SQL server.

Just to clarify, which scenario do you experience? Having a completed task with 0.0% progress, or the latter - having 99% of completion?

Thanks for reporting , we will investigate further
#AB125852

@rafalbroll-datapharm - we recently made improvements to the reindexing logic, can you please execute reindex and let us know if you still see the issue. Looking forward to your response

@rafalbroll-datapharm - we recently made improvements to the reindexing logic, can you please execute reindex and let us know if you still see the issue. Looking forward to your response

Many thanks. Which FHIR server version has those changes introduced?

@rafalbroll-datapharm - 4.0.292 should have these changes, thanks !

@rafalbroll-datapharm , were you able to validate and is the issue addressed. This issue will be closed in a week, if no updates


How to change "FILTER MENU" text on top of the card?

Good idea.  I’ll add something that lets you do that. I’m thinking something like:
BigFilter()->setTitle(“your title”)
I’ll add it tonight at some point.
Thanks
Ed

@edanisko Do you have time to update that? I'm looking forward to.

@phoenixg done.

@edanisko Great job!


Windows Update

After the latest Windows update, I can no longer bring the counter down!

@Zsayaaad Was it working fine before Windows Update? What is your display scale?

Yup, it was displaying both, the time of Salah shown in pic above and also the time remaining

Just to be sure, did you double-check that showing countdown option is enabled in Settings?
Also you have to check your display scale, if it's 150% or 200% then the countdown may become clipped (this is a bug and fixed in next update).

It's already enabled. Changing the scale isn't useful with it.

It's now working well without doing anything

Ok, I can repro here in my VM. It's the issue of DPI scale (#14) (it change when display scale change).
For clarification, you have display scale 125% which make UI elements bigger but the widget stays at the same width. So when it shows Maghrib (which is the longest prayer name), there won't be enough space for both columns to show in same line, thus the 2nd column disappear. Now with Isha there is space so 2nd column is back.

@Zsayaaad v3.1 is released now, the issue should be fixed.

Thank you for creating this awesome tool btw.

Thank you for creating this awesome tool btw.

You are welcome :) I'm happy that you find it awesome.


I'm back

Hey guys,
The project is back and needs contributions
you can check my fork https://github.com/muhammednagy/peatio
I fixed some of the crucial problems like the withdrawal problem
I'll be pushing updated and bug fixes
I need contributions
I need people to write docs with me and fix some bugs with me
I already made peatio working for a rising exchange
you can ask me and I will help you if I know

Hey Muhammed! First of all, great job and thanks for sharing this with the community!
I have full plans of working with you and getting the fork up and running!
I will check the code out right now and have a look at it. Cheers

i needed to contact you to make a working dockerfile
can you add me on facebook or send me your private email?
https://www.muhnagy.com

can you please add me on skype? we can chat there, it's easier. I don't do
much of facebook.
add me on felipemcaldas and we can chat there.
I will definitely help with the dockerfile and the docker-compose. It's
awesome when it works fine :D
On Tue, Jun 6, 2017 at 8:13 AM, Muhammed Nagy<EMAIL_ADDRESS>wrote:

i needed to contact you to make a working dockerfile
can you add me on facebook or send me your private email?
https://www.muhnagy.com
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/567#issuecomment-306325436, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADr4eM0Nxt8BIeWBcC0l6oCBIj1LRnQbks5sBH12gaJpZM4Nwmjo
.

--
Felipe

skype is blocked in egypt and openvpn too  :(

Oh, I didn't know that. Ok, I'll contact you on Facebook.
On 6 Jun 2017 9:29 AM, "Muhammed Nagy"<EMAIL_ADDRESS>wrote:

skype is blocked in egypt and openvpn too :(
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/567#issuecomment-306338970, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADr4eJuJU58evmv2FJcI9W9WZiowJrKaks5sBI9SgaJpZM4Nwmjo
.

My English is not very good, but I hope to at least give a translation to the documentation in Spanish, since it is a great project

Yeah, i can add Spanish and you translate Peatio in Spanish !

Yeah, I liked peatio in spanish, but aún no pude compilarlo
Jesús Figueroa (Shadow Myst)
http://shadowmyst.net
El 6 jun. 2017 11:44 AM, "Muhammed Nagy"<EMAIL_ADDRESS>escribió:

Yeah, i can add Spanish and you translate Peatio in Spanish !
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/567#issuecomment-306546399, or mute
the thread
https://github.com/notifications/unsubscribe-auth/APwg2vasQTfUsy0VNj4epqwdqCYNBxDsks5sBYH8gaJpZM4Nwmjo
.

Sigo teniendo el mismo problema
root@mist:/usr/local/share/peatio# bundle exec rake db:setup
rake aborted!
Psych::SyntaxError: (): did not find expected key while parsing a block mapping at line 6 column 3
/usr/local/share/peatio/config/application.rb:15:in <module:Peatio>' /usr/local/share/peatio/config/application.rb:14:in <top (required)>'
/usr/local/share/peatio/Rakefile:5:in require' /usr/local/share/peatio/Rakefile:5:in <top (required)>'
/root/.rbenv/versions/2.2.1/bin/bundle:23:in load' /root/.rbenv/versions/2.2.1/bin/bundle:23:in '
(See full trace by running task with --trace)

Muchas gracias, ya pude resolver el problema. El fork de Muhammed es el que esta mejor posicionado y gustoso ayudare a hacer una traduccion en español ya que estare usando mucho este software.
Thank you very much, I was able to solve the problem. The fork of Muhammed is the one that is better positioned and will help to make a translation in Spanish since I will be using this software a lot.

Thanks
Can you please write in English only here :D ?

Glad u're gonna revive this.

Hi @MikeLi1989, any idea when you are going to update this repo? See the thread.

we will be waiting for @MikeLi1989 for another week after that people like @felipecaldas will be working off my repo

Yeah, exactly. I've been busy this week, but I will look at the dockerfile
this weekend, Muhammed.
On 7 Jun 2017 7:29 PM, "Muhammed Nagy"<EMAIL_ADDRESS>wrote:

we will be waiting for @MikeLi1989 https://github.com/mikeli1989 for
another week after that people like @felipecaldas
https://github.com/felipecaldas will be working off my repo
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/567#issuecomment-306741922, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADr4eNKC-_29Rz5Ytp4Gqk6VbFnneukGks5sBm1qgaJpZM4Nwmjo
.

OK
BTW you didn't contact me

Yeah, I know. Crazy busy week at work, got a project delivery this Friday.
I'll get in touch on Sunday.
On 7 Jun 2017 7:31 PM, "Muhammed Nagy"<EMAIL_ADDRESS>wrote:

OK
BTW you didn't contact me
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/peatio/peatio/issues/567#issuecomment-306742473, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ADr4eLgWoKEKKhqkcxCBVZWXbJSl-qq2ks5sBm3ugaJpZM4Nwmjo
.

@muhammednagy
You could enable the issues in your project, so that any doubt we do directly in your fork

How to add my own crypto since i had built my own crypto based on btc clone environment. How i want to make my coin matket marker mean how i want to set price compare with btc and fiat?

you will need to make a bitcoind compatible json rpc server to use it with Peatio or edit peatio severly to support your own crypto

blockquote, div.yahoo_quoted { margin-left: 0 !important; border-left:1px #715FFA solid !important; padding-left:1ex !important; background-color:white !important; } Canni hire you to do it
Sent from Yahoo Mail for iPhone
On Friday, June 9, 2017, 8:23 PM, Muhammed Nagy<EMAIL_ADDRESS>wrote:
you will need to make a bitcoind compatible json rpc server to use it with Peatio or edit peatio severly to support your own crypto
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

you can contact me in my private email
muhnagy.com

blockquote, div.yahoo_quoted { margin-left: 0 !important; border-left:1px #715FFA solid !important; padding-left:1ex !important; background-color:white !important; } Ok
Sent from Yahoo Mail for iPhone
On Saturday, June 10, 2017, 2:31 AM, Muhammed Nagy<EMAIL_ADDRESS>wrote:
you can contact me in my private email
muhnagy.com
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Hi Muhammed,
do you know this paper?
https://sakurity.com/blog/2015/01/10/hacking-bitcoin-exchanger.html
Did you check the code if the vulnerabilities uncovered in this audit are all fixed? The open source contributions ended shortly after the publication of this audit, so it's not unlikely that those holes are still open in the open source version what could lead to a very unpleasant user experience if someone takes it live without fixing those holes first.

@wielandgmeiner  yeah they are fixed

hello
the source of ethereum is open source now!!
please check my fork
please help me to continue by donating

@muhammednagy @felipecaldas Great to see this project is back! I am now learning peatio code so I think we can together build a better peatio! I will add muhamendnagy first on facebook.


A couple small issues in Segment Docs

on this page: help/components/c-segmentation/seg-overview.md
(link: https://docs.adobe.com/content/help/en/analytics/components/segmentation/seg-overview.html)
This line needs a space after the OR:
When building audience segments in the Segment Builder, you define conditions using the AND and ORoperators between containers.
I couldn't really make sense of this sentence, maybe I am confused.
Visit container where visit number equals 1: Viewing a Visit All page views from the first visit are included in the report because it matches the segment rule.
This sentence doesn't make sense - a dimension can't require a persistent dimension.  Should it be the Participation model requires a persistent dimension?
If using a Revenue Participation report, no pages receive credit because this dimension requires a persistent dimension.

Thanks very much! It appears this was fixed shortly after you raised the issue. We appreciate you bringing it to our attention!


Updated to reflect changes to ODNS API

ODNS updated the API to also show cross-references with ThreatGrid. I've added associated hashes for both IPv4 and the domain functions. The IP will also show convicted domains that resolve to it now. I also updated the requirements*.txt files to reflect the changes and some minor tweaks to the networkobject template. Let me know if you have any questions or other features. I'll prob work on adding some more later on, just wanted to get these changes in. Thanks.

That fix ^ is me too, just didn't set --global, btw


publish jib-core

hello I stumbled upon jib and was looking to try build something for sbt on top of jib. Would it be possible to publish jib-core to maven central so that people can build plugins for other jvm build tools?

I also created a "demo" plugin of jib, here: https://github.com/schmitch/sbt-jib I use a git submodule to pull jib, however it's a little bit flaky since I need to patch some sources, else zinc/scala compiler is not happy.

Hi @schmitch, though we don't have a specific timeline for this, it is in our roadmap for jib.

Yup, should be happening eventually. I'm going to close this since we already have an issue open for making a jib class library here: https://github.com/GoogleContainerTools/jib/issues/337


Read Excel Formula Mistake

Hi,
I have written a little code in VB NET to read the cells data from an excel file where there is some formulas. However, the read result is different from the value that is in the original excel sheet and I don't know why.
In the column O2 to O7 of the excel file the value is "Case01", Case04", "Case03", "Case07", Case08" but the values that the program read are: "Case01","Case04","Case08","Case08","Case08". (I attach the screen image of the excel file and the program, the code in a txt file and the excel file).
Could you help me to discover where is my mistake?
Thank you
Form1.vb.txt
Data01.xlsx

Seems the <> operator doesn't work like Excel when compare number and string. This should be fixed.


Clarify the license of example codes generated with vue-cli create

What problem does this feature solve?
When creating a new template using the vue-cli (v3) it would be helpful to have information about the software license for the generated example codes.
If I understand correctly, vue-cli is itself MIT licensed and outputs parts of itself when running vue-cli create. Thus, the templates would also be under the MIT license. (Or, does vue-cli also output code from some of its dependencies with another license?)
Having license information is useful if one initially sets up a project using vue-cli create and later would later like to release that project under an OSS license.
What does the proposed API look like?
This could be implemented by adding a note to the documentation. One could also include a LICENSE file in the generated template.

Vue is used as an npm dependency and that does not affect the src code in a Vue CLI project. How to license your project is up to you.

As I understand @yyx990803:
The code generated by vue-cli is public domain (i.e. not covered by copyright) and you are free to license your code that builds upon it in whatever way you wish.
Right?


Add code generation model

What is included in this PR

A script to generate a simple code generation model (more precisely, it's not a code generation model like ChatGPT, rather it's just a simple classification model at this moment)
All components in confidential-ml demo (Runtime/Device/ModelProvider) are capable of taking either "word prediction model" and "code generation model" in the same way.
A client-side GUI (browser-based) support (mirroring-like GUI support)

What is not included in this PR (will be done in the next PR)

I'll update the docker image accordingly that includes node-js server codes to support a GUI demonstration.
I'll update README.md to describe instructions for testing with GUI.

[minor] Indents are mixed (2 or 4). Could you please apply formatting like below?
astyle --style=google --indent=spaces=2 *.cc *.h

astyle --style=google --indent=spaces=2 *.cc *.h

I forgot it, reflected:


Build and test RocketMQ on ARM64 CPU architecture

TASK
Add an extra job to run the tests on TravisCI ARM64 nodes.
More and more software development is being done on ARM64 CPU architecture. It would be good if RocketMQ is being regularly tested on ARM64!
Travis-CI provides nodes with this architecture and only .travis.yml needs to be changed! The source code would need changes only if it breaks for some reason on ARM64.

Note: at the moment RocketMQ project uses travis-ci.org! It will be shut down soon and all active projects will be moved to travis-ci.com automatically.
RocketMQ PMC members can ask Apache Infra team via JIRA to make the migration earlier.
travis-ci.com also provides ARM64 Graviton2 nodes (hosted at Amazon WEb Services) which are newer and faster than the arm64 nodes at travis-ci.org.

Note: at the moment RocketMQ project uses travis-ci.org! It will be shut down soon and all active projects will be moved to travis-ci.com automatically.
RocketMQ PMC members can ask Apache Infra team via JIRA to make the migration earlier.
travis-ci.com also provides ARM64 Graviton2 nodes (hosted at Amazon WEb Services) which are newer and faster than the arm64 nodes at travis-ci.org.


Wheels refactor (mac proj)

even when the wheels build correctly, it crashes at runtime because it can't find proj.db. I'll have to take a closer look at the pyproj setup

Closing this as mac wheels appear to work with proj from homebrew


Expose component testing code to outsiders

I wanted to test my component's output, and I was informed of TestLayout:
https://github.com/yewstack/yew/blob/a4eb9650825c2d9f808e1b811011b7773e1ddf7a/yew/src/virtual_dom/mod.rs#L327
Unfortunately, it's private to the crate, so it cannot be used by outsiders. Consider making TestLayout public or possibly create something more suitable for general use that could help with testing component output expectations.
Questionnaire

[ ] I'm interested in implementing this myself but don't know where to start
[ ] I would like to add this feature
[ ] I don't have time to add this right now, but maybe later

Thanks for the issue!
I think it makes sense for this functionality to live in a yew-test crate. It can start with a simple with a way to render a component to an empty dom and assert the shape of the resulting html.

It's been over a year, any update on this?

This will be in a tests module:
#[cfg(tests)]
pub mod tests;

It can't be in it's own crate because it depends on interval APIs (like VDiff)