Artifactory: what is the cron expression syntax? - artifactory

I've created a remote repository and I'd like to enable the Activate Replication of the repository, but for some reason I don't get the cron expression validated.
If I input 5 4 * * *, there'll be an error The cron expression is invalid.
I've read https://www.jfrog.com/confluence/display/JFROG/CronTrigger
Does somebody know what's going on? Thanks!

You can see references in the CronTrigger Tutorial.
For example, the 0 0 12 * * ? expression will fire at 12pm (noon) every day.

Related

In Elastalert schedule interval option is missing

In Kibana watcher alerts it's possible to fully control the alert schedule using trigger.
{
"trigger": {
"schedule": {
"interval": "2m"
}
},
However in elastalert there is no dedicated feature but only to use which aggregate alerts and send
aggregation:
hours: 2
There is an open issue https://github.com/Yelp/elastalert/issues/1895
If someone know any viable way or an hack to solve this , please let me know.
In ElastAlert v0.2.2, they have provided a limit_execution feature. In that we can define a cron expression. Since I wanted to run at every 15 minutes , I used 0/15 * * * *.
limit_execution: "0/15 * * * *"
Further reading-
Refer -https://github.com/Yelp/elastalert/issues/492
Release note-https://github.com/Yelp/elastalert/blob/master/changelog.md
Free online cron expression validator-https://crontab.cronhub.io/

Karate - how to wait for assertion (negative assertion)

Using Karate I need to use assertion (negative assertion) but I need some repetitive check.
Example: when I delete application, it takes some time when it is removed from User Interface. I need to check If the app name is still there or not (every 3 seconds). If it is not present (the appName do not exist on page) then next test steps follow.
For assertion I use:
assert !locate('{//*[normalize-space(text()) = \'' + appName + '\']}').exists
Could you please help me with idea how to do periodically (every 3 sec) check the appName existence? Thank you.
Use waitUntil()
* def fun = function(){ return !locate('#foo').exists ? true : null }
* waitUntil(fun)
EDIT: please also note this API revision we will be doing for 0.9.6 final: https://github.com/intuit/karate/issues/1148

linkedin api update comment count null

We run a daily job to pick up data from LinkedIn's api and noticed a change today in the values we receive back. They are both actually 0 but one comes back as null now and another comes in as 0 as before.
Update: Timestamp: 2017-03-28T19:31:25.281Z, UpdateKey: UPDATE-xxxxxxxx , UpdateType: CMPY
NumLikes: 1 , UpdateComments: Total: 0
Update: Timestamp: 2017-03-27T18:37:12Z, UpdateKey: UPDATE-xxxxy , UpdateType: CMPY
NumLikes: 0 , UpdateComments: null
Does LinkedIn change their data returns often? Is this something to be expected? Anyone else running into this today? I'm concerned that there may be something happening on LinkedIn's end that may cause us to receive null values when it should return something other than 0.
Thanks!
Since the beginning of 2017 there are changes in the Linked In API.
See: http://www.oodlestechnologies.com/blogs/Recent-changes-in-LinkedIn-API
and https://cloud.c2m.net/linkedin/linkedin-api
Another posibility could be a rejection due to trying to access the data from an App or a desktop application, in such case, just add
?allowUnsupportedBrowser=true
to your POST request.

How to check which SQL query is so CPU intensive

Is there any possible way to check which query is so CPU intensive in _sqlsrv2 process?
Something which give me information about executed query in that process in that moment.
Is there any way to terminate that query without killing _sqlsrv2 process?
I cannot find any official materials in that subject.
Thank You for any help.
You could look into client database-request caching.
Code examples below assume you have ABL access to the environment. If not you will have to use SQL instead but it shouldn't be to hard to "translate" the code below
I haven't used this a lot myself but I wouldn't be surprised if it has some impact on performance.
You need to start caching in the active connection. This can be done in the connection itself or remotely via VST tables (as long as your remote session is connected to the same database) so you need to be able to identify your connections. This can be done via the process ID.
Generally how to enable the caching:
/* "_myconnection" is your current connection. You shouldn't do this */
FIND _myconnection NO-LOCK.
FIND _connect WHERE _connect-usr = _myconnection._MyConn-userid.
/* Start caching */
_connect._Connect-CachingType = 3.
DISPLAY _connect WITH FRAME x1 SIDE-LABELS WIDTH 100 1 COLUMN.
/* End caching */
_connect._Connect-CachingType = 0.
You need to identify your process first, via top or another program.
Then you can do something like:
/* Assuming pid 21966 */
FIND FIRST _connect NO-LOCK WHERE _Connect._Connect-Pid = 21966 NO-ERROR.
IF AVAILABLE _Connect THEN
DISPLAY _connect.
You could also look at the _Connect-Type. It should be 'SQLC' for SQL connections.
FOR EACH _Connect NO-LOCK WHERE _Connect._connect-type = "SQLC":
DISPLAY _connect._connect-type.
END.
Best of all would be to do this in a separate environment. If you can't at least try it in a test environment first.
Here's a good guide.
You can use a Select like this:
select
c."_Connect-type",
c."_Connect-PID" as 'PID',
c."_connect-ipaddress" as 'IP',
c."_Connect-CacheInfo"
from
pub."_connect" c
where
c."_Connect-CacheInfo" is not null
But first you need to enable connection cache, follow this example

signalR message structure flags clarification?

I've read here about the structure of signalR's response message :
for example
For PersistentConnection
{"C":"B,2CE|K,C|L,2|M,0|I,0|J,0","M":["foo"]}
Where
Persistent Response:
C - cursor
M - Messages
T - Timeout (only if true) value is 1
D - Disconnect (only if true) value is 1
R - All Groups (Client groups should be reset to match this list exactly)
G - Groups added
g - Groups removed
Question #1
What's wrong with sending only the message part ? why do i need all the "C" information ? The client only needs the message. A message number #N is not dependent with message number #N-1 (AFAIK) -- so I dont see the reason for this "C" section. ( and I assume Im wrong by missing something here).
Question #2
Even so , how can I understand what the tokens means ? I didn't see in the manual the "K,L,I,J,2CE" tokens.
Where / How can I understand what they are saying ? What if I don't want the server to send that info but only the message ?
Open Source has an often over looked feature. You can simply download the source and take a look around. By simply searching in the source for the string "R" I was able to find some of the information you are looking for.
Answer #2:
These shorthand property names directly map to the JsonSerialization of objects in SignalR.
HubResponse
S - State
R - Result
I - Id
E - Error
T - StackTrace
PersistantResponse
L - LongPollDelay
D - Disconnect
T - TimedOut
G - GroupsToken
Some of the others are not found in the current code base, and since the issue your referring to is 7 months old I would guess they have been refactored out.
Answer #1:
The metadata is important to how SignalR operates. The double edged sword of frameworks is that we offload the domain or what it solves to the framework and its creators, and we implicitly agree to let them be the domain expert. Sometimes that makes it a bit of a black box to use, if you want to see what each of these properties are actually used for download the source and follow the code. If for some performance reason you feel the need to trim out some of the code around what you determine to be extraneous fork the code and give it a shot.

Resources