Issues while using error_page and location

According to the original report (Ehsan Mahdavi) the audit logs are not working for custom error pages (using: error_page or location). In that scenario the logs are not written.
Ehsan Mahdavi also said that in case of SecRuleEngine is set to DetectionOnly everything works like expected.

Hello, is there a plan to be fixed? The issue still exists and it's very serious. Also, audit_logging now works without the custom 403 page only in serial mode, not in concurrent. Thank you in advance. I think fixing this will solve many other issues and will help many people like me.

In addition, the problem with concurrent logging was my mistake. It works. Remains the problem with custom 403 page only.

If you don't plan to fix it can you please tell me which file and function is related to this problem ?

@averges @intelbg
Have you tried enabling the intercept_errors directives (e.g. proxy_intercept_errors) directive in Nginx?

hi @victorhora! Thanks about the reply. I tried - in server block and in location. but didn't help. Logging didn't work with it too with custom 403 page.

@victorhora, yes, I've tried with intercept_errors directives but no luck.
Thank you for looking into this error.

@zimmerle Here too
It's enabled the proxy_intercept_errors and returns the same problem.

Maybe, have some problem in this code: https://github.com/SpiderLabs/ModSecurity-nginx/blob/master/src/ngx_http_modsecurity_module.c#L164-L186
I'm trying to understand it

@ceasbz I think that the problem is in this chunk of code too, but I a can't understand and fix it. If you do it please share the fix. I will appreciate it!

Hi,
Notice the configurations [1] and [2]. They are different by the error_block location.
In [1] the error was specified inside the location block. In that case the ModSecurity rules specified for the location block will be also applied to the error. That is different from [2] where we have no ModSecurity rules configured for the error block.
In my tests, having the configuration in the right place, I managed to have ModSecurity working as expected. I am closing the bug assuming that it was a configuration issue. If you think otherwise, please re-open.

Hi!
I've tested the 2 example configs, the 1 is not showing the custom error page but is logging as expected, the 2 displays the custom error page but is not logging.

Hi @rm3nchaca,
Try to consider suggestions in this thread  https://github.com/SpiderLabs/ModSecurity-nginx/issues/76

Hello @AirisX! I replaced the files with yours and recompiled nginx with the new modsecurity-nginx files. Logging seems to work, but uid parameter is no more logged in the audit log. UID parameter is a uid cookie set in nginx with userid module like follows:
userid on;
userid_name uid;
userid_expires 1s;
userid_path /;
Then when you are blocked on the page it's shown:
403 Forbidden by TU2Xb1qNgCOsXwgwAwMDAg==
And this should be logged in audit logs too as it was before your patch. Can you please give me an advice how to proceed?

Hello @intelbg,
Could you provide your config? Please, also show an example of the audit log entries before and after patch.

@AirisX Thank you about your reply!
Here is the config file, the log file now and screenshot of log file before the patch where there is a line cookie with the uid value. Do you think that this is related to the patch? If you prefer I can write you on a private message/email.
config.txt
log_after_patch.txt

Hello @intelbg,
Could you clarify, do you mean uid cookie in the request header? As I can see from you screenshot of the log file, you are talking about request header. In this case this may be due to the parameter userid_expires which sets the expiration time to 1s and the next client request after this time may not contain this cookie. Therefore, if you make 2 (or more) requests per second the second and subsequent audit entries will contain the uid cookie.

@AirisX you are right! But no matter what value it's set in some moment there is a point that no uid cookie is logged and I can't understand why. In the time of expiration it should provide and log immediately a different cookie, right?

@intelbg Yes, while the uid cookie is not expired, it should be logged. Try to increase the userid_expires value to 1 hour, to exclude other reasons.

@AirisX even with 1 hour settings for expiration, the first request for example does not log the uid cookie. With the second and third there is no problem (I attached the log).
auditlog.txt
Also, if it's with big expiration time one uid cookie will match / parse more than one matched/blocked rule as I want to have separate uid cookie value for every different block hit. How can achive it? Is it possible and why in case of expiration it's not logged as it should immediately assign another uid cookie hash. Sorry it it's already out of the topic but technically I really can't understand this and need solution.

I still have the issue today. Custom error Page:
error_page  403              /custom_403.html; #<< contains only "Forbidden"
location = /custom_403.html {
root /usr/share/nginx/html;
internal;
}
I have tried to do the modsec-block before and after the custom error page...
Modsecurity shows the Default ErrorPage,
Logging does work fine
nginx 1.13.10
modsec v3/master
ModSecurity-nginx HEAD


Consider using cargo add in the new command

Currently cargo component new generates the dependency with the version fixed in the binary, e.g. cargo-component-bindings = "0.6.0" .
I would prefer having the same behavior as when calling cargo add cargo-component-bindings, generating cargo-component-bindings.workspace = true if I am inside a workspace and have version set in [workspace.dependencies]. If the version is not set, cargo add checks the latest version which is I believe preferable.

@tomasol Thanks for the suggestion!
I think spawning cargo to do what you suggest is a good idea so that we don't have to duplicate the logic for detecting workspace membership.
The new subcommand of cargo-component predates cargo add and needs to modify the manifest anyway, so that's primarily why it's done that way now.


Sunmi print barcode

Hi Sir,
I am using version 1.1.0 to print the text is working. but when i print with barcode. it just only can print 1 line. the rest cannot print. include the text at bottom.
the code i am use is like this
sunmiInnerPrinter.printBarCode("1234567890", 8, 162, 2, 2);
also that is not error display
I am using ionic 3
thanks

import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
declare var sunmiInnerPrinter: any;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController, public navParams: NavParams) {

}

print() {
	sunmiInnerPrinter.printBarCode("1234567890");
}

}
this is the code

@chen6677
1)
You should chain your printing codes
2)
The plugin is only good when printing text followed by images. or an image followed by text (E.g. a logo then receipts information)


Pleas add a describtion and link at github

You should add a short description and link at this github project. Now it's "No description or website provided." at https://github.com/hbenl/vscode-firefox-debug
Maybe:
"VS Code Debug Adapter for Firefox - https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-firefox-debug"
Makes it easier for new "Woo, what's this about?!?" users and looks better ;)

Done. Thanks for the suggestion :)


Missing possibility to use addresses

Hello, first I would like to say: Maplace feels really well constructed.
But I have one special need for less experienced users. Currently I mainly use the gomaps-plugin for displaying maps, because we can set markers by coordinates or simply by an address (where the script makes the work to get the geo-data from google maps). Sure this ist not the prefered way and even has a bad performance. But it is the most simple way for some people and for setting just a hand full of markers on websites with less traffic.
Could you implement a comparable solution to set markers not by a pair of latitude and longitute but by giving the postal address in the data array?

Hi, thank you for the feedback!
I still think that Maplace should stay as "tiny" as possible and let the user implement the application logic using the library just as an helper to place markers on the map. It should not be Maplace responsibility handle how those locations get generated. Also, other users not interested in the geolocation functionality will have to load unused code for no reason.
But I see your point, and I will look to implement some sort of plugin mechanism to load only as necessary, or something similar.
For now, please check out my example with user input address and let me know if it's of any help: https://jsfiddle.net/_tomorro/Lfwn7g6f/
I'm sure it can be extended quite easily to manage more complex stuff.


feat: add the collapse_boolean_attributes option

Description:
Collapsing attributes can be unsafe in some cases, ref http://perfectionkills.com/experimenting-with-html-minifier/#collapse_boolean_attributes, but I don't think it is good practice to write boolean attrbiutes in this style, so true by default
BREAKING CHANGE:
Yes
Related issue (if exists):
No

@kdy1 Rebased, fixed


Failed to get Azure Cloud Provider

Failed to create provisioner: Failed to get Azure Cloud Provider. GetCloudProvider returned  instead
Unable to create StorageClass with provisioner: kubernetes.io/azure-file.
Unable to create PersistentVolumeClaim which based on StorageClass which uses azure-file provisioner.
Expected:
K8s has azure provisioners or StorageClasses when deployed on Azure.

We will review this.


BUG: Unable to Generate SHAP values for a dataframe containing text data trained on lstm model

Issue Description
Hi I am trying to generate SHAP values for my LSTM model. I am trying to pass a dataframe with only one column called 'text' that contains the text records to the explainer. However the explainer returns the following error: TypeError: cannot use a string pattern on a bytes-like object. I have attached the code that i have tried below:
Minimal Reproducible Example
import shap

def model_predict(data):
    X = [vocab(tokenizer(str(text))) for text in data['text'].tolist()] ## Tokenize and map tokens to indexes
    X = [tokens+([0]* (max_words-len(tokens))) if len(tokens)<max_words else tokens[:max_words] for tokens in X] ## Bringing all samples to max_words length
    return model.predict_proba(X)

masker = shap.maskers.Text(tokenizer=r"\W+")
exp = shap.Explainer(model=model_predict, masker = masker)
spv = exp(input_df)

Traceback
File c:\.venv\lib\site-packages\shap\explainers\_partition.py:146, in Partition.explain_row(self, max_evals, main_effects, error_bounds, batch_size, outputs, silent, fixed_context, *row_args)
    143     raise ValueError("Unknown fixed_context value passed (must be 0, 1 or None): %s" %fixed_context)
    145 # build a masked version of the model for the current input sample
--> 146 fm = MaskedModel(self.model, self.masker, self.link, self.linearize_link, *row_args)
    148 # make sure we have the base value and current value outputs
    149 M = len(fm)

File c:\.venv\lib\site-packages\shap\utils\_masked_model.py:30, in MaskedModel.__init__(self, model, masker, link, linearize_link, *args)
     28 # if the masker supports it, save what positions vary from the background
     29 if callable(getattr(self.masker, "invariants", None)):
---> 30     self._variants = ~self.masker.invariants(*args)
     31     self._variants_column_sums = self._variants.sum(0)
     32     self._variants_row_inds = [
     33         self._variants[:,i] for i in range(self._variants.shape[1])
     34     ]

File c:\.venv\lib\site-packages\shap\maskers\_text.py:301, in Text.invariants(self, s)
    298 def invariants(self, s):
    299     """ The names of the features for each mask position for the given input string.
    300     """
--> 301     self._update_s_cache(s)
    303     invariants = np.zeros(len(self._tokenized_s), dtype=bool)
    304     if self.keep_prefix > 0:

File c:\.venv\lib\site-packages\shap\maskers\_text.py:280, in Text._update_s_cache(self, s)
    278 if self._s != s:
    279     self._s = s
--> 280     tokens, token_ids = self.token_segments(s)
    281     self._tokenized_s = np.array(token_ids)
    282     self._segments_s = np.array(tokens)

File c:\.venv\lib\site-packages\shap\maskers\_text.py:183, in Text.token_segments(self, s)
    181     return parts, token_data["input_ids"]
    182 except (NotImplementedError, TypeError): # catch lack of support for return_offsets_mapping
--> 183     token_ids = self.tokenizer(s)['input_ids']
    184     if hasattr(self.tokenizer, "convert_ids_to_tokens"):
    185         tokens = self.tokenizer.convert_ids_to_tokens(token_ids)

File c:\\.venv\lib\site-packages\shap\maskers\_text.py:360, in SimpleTokenizer.__call__(self, s, return_offsets_mapping)
    358 offset_ranges = []
    359 input_ids = []
--> 360 for m in re.finditer(self.split_pattern, s):
    361     start, end = m.span(0)
    362     offset_ranges.append((pos, start))

File C:\tools\python3.10\latest\lib\re.py:247, in finditer(pattern, string, flags)
    242 def finditer(pattern, string, flags=0):
    243     """Return an iterator over all non-overlapping matches in the
    244     string.  For each match, the iterator returns a Match object.
    245
    246     Empty matches are included in the result."""
--> 247     return _compile(pattern, flags).finditer(string)

TypeError: cannot use a string pattern on a bytes-like object

Expected Behavior
No response
Bug report checklist

[X] I have checked that this issue has not already been reported.
[X] I have confirmed this bug exists on the latest release of shap.
[ ] I have confirmed this bug exists on the master branch of shap.
[ ] I'd be interested in making a PR to fix this bug

Installed Versions
Name: shap
Version: 0.42.1
Summary: A unified approach to explain the output of any machine learning model.
Home-page:
Author:
Author-email: Scott Lundberg<EMAIL_ADDRESS>License: MIT License

This is a longstanding problem we have with LSTMs. Currently there is no solution in sight for this

Is this problem only for LSTM models or for NLP usecases in general?


rss-bot: Add --unwrap, --math options.

These are for processing arXiv API results.

Automated message from Dropbox CLA bot
@rwbarton, it looks like you've already signed the Dropbox CLA. Thanks!

Merged, thanks @rwbarton!


Error with ClaimMany action in v0.19.3

version: v0.19.3
I got this error in my logs and I can't claim these allocations for rebate pool:
[2022-07-07 13:28:08.865 +0000] WARN (IndexerAgent/1 on indexer-agent-0): Failed to claim allocations
    component: "Network"
    indexer: "0xb06071394531B63b0bac78f27e12dc2BEaA913E4"
    operator: "0x7A361DB89c9419699DEf3349b5F6F1cBA294267D"
    action: "ClaimMany"
    err: {
      "type": "IndexerError",
      "message": "Failed to claim allocation",
      "stack":
          IndexerError: Failed to claim allocation
              at indexerError (/opt/indexer/packages/indexer-common/dist/errors.js:143:12)
              at Network.<anonymous> (/opt/indexer/packages/indexer-common/dist/network.js:993:60)
              at Generator.next (<anonymous>)
              at fulfilled (/opt/indexer/packages/indexer-common/dist/network.js:5:58)
              at runMicrotasks (<anonymous>)
              at processTicksAndRejections (node:internal/process/task_queues:96:5)
      "code": "IE016",
      "explanation": "https://github.com/graphprotocol/indexer/blob/master/docs/errors.md#ie016",
      "cause": {
        "type": "TypeError",
        "message": "_a.gt is not a function",
        "stack":
            TypeError: _a.gt is not a function
                at /opt/indexer/packages/indexer-common/dist/network.js:969:124
                at Array.sort (<anonymous>)
                at Network.<anonymous> (/opt/indexer/packages/indexer-common/dist/network.js:969:22)
                at Generator.next (<anonymous>)
                at fulfilled (/opt/indexer/packages/indexer-common/dist/network.js:5:58)
                at runMicrotasks (<anonymous>)
                at processTicksAndRejections (node:internal/process/task_queues:96:5)
      }
    }

And we can see in the logs that there many allocations pending:
[2022-07-07 13:38:08.653 +0000] INFO (IndexerAgent/1 on indexer-agent-0): 57 allocations are eligible for rebate pool claims

Thanks

Hey @bleiva, thanks for reporting.
Could you share the node js version that you are using? I'm trying to reproduce the issue.

We are running the containers inside our Kubernetes Cluster, the nodejs version which is running the container
ghcr.io/graphprotocol/indexer-agent:v0.19.3
root@indexer-agent-0:~# node -v
v16.15.1
root@indexer-agent-0:~#

On the other hand, our instances are Amazon Linux 2, beta.kubernetes.io/arch=amd64, beta.kubernetes.io/instance-type=r5a.xlarge

I'm on Ubuntu 20.04.4 LTS and Node v16.16.0 and I'm getting the same error. Using indexer-agent v0.19.3 installed via NPM.
Related logs:
{"level":30,"time":1658159085387,"pid":999887,"hostname":"indexer-agent","name":"IndexerAgent","component":"Agent","claimable":[{"id":"0x35738cf0439698CCFB4eC0fDe38EA7511ec1D23E","deployment":{"bytes32":"0xd991edfccdeef8bc78f513a9cf2afeedbae74ab23041a3ebdb33033c0255f731","ipfsHash":"QmcyxEvXAKxs7n1WgKY4sqavvPa7VWfL8KuR7JSnjWjHVz"},"createdAtEpoch":539},{"id":"0x9c5e5911Bd56BFFD709232A796918D3fBF5Bd504","deployment":{"bytes32":"0x8e01ba7793e57b4f9a4e3d6c0c69e30f06934731297747d9030e1adac3eb577e","ipfsHash":"QmXtz8Zf837khnHFX1DbPY8cv97fSNd25T19Fjgv4yekGd"},"createdAtEpoch":535},{"id":"0xbAB4406315461fe1D49F7EE596f7DCc80BF64b53","deployment":{"bytes32":"0x2b4f18b8b904abe5fe6dc93e4f42c38e9d7a037b8a765345c128dfd6d2c8e6e3","ipfsHash":"QmRFiCChCVwbSJ7VuEYiesEb5wHo89CuKyYS2digs9mZRL"},"createdAtEpoch":516},{"id":"0xCA8150f09c82Db28672bf218e480F57D5Bf207B6","deployment":{"bytes32":"0x1cbe978fdda55597c52276bbbcd5492b6b1746ff8d129efb5477d4aa9d53650e","ipfsHash":"QmQGrgikMWew2Rt2oD88vjCHAe9KEzZkpujUJAHmw834KF"},"createdAtEpoch":524}],"msg":"Claim rebate rewards"}
{"level":30,"time":1658159085388,"pid":999887,"hostname":"indexer-agent","name":"IndexerAgent","component":"Network","indexer":"0x87Eba079059B75504c734820d6cf828476754B83","operator":"0xC56961836857210e256D71c91a62e90865075380","action":"ClaimMany","allocations":[{"allocation":"0x35738cf0439698CCFB4eC0fDe38EA7511ec1D23E","deployment":{"bytes32":"0xd991edfccdeef8bc78f513a9cf2afeedbae74ab23041a3ebdb33033c0255f731","ipfsHash":"QmcyxEvXAKxs7n1WgKY4sqavvPa7VWfL8KuR7JSnjWjHVz"},"createdAtEpoch":539,"closedAtEpoch":542,"createdAtBlockHash":"0xeda9e9266dc4781365ecf70d4ffdf6e253221400ac70c7300fc29ba9847d985b"},{"allocation":"0x9c5e5911Bd56BFFD709232A796918D3fBF5Bd504","deployment":{"bytes32":"0x8e01ba7793e57b4f9a4e3d6c0c69e30f06934731297747d9030e1adac3eb577e","ipfsHash":"QmXtz8Zf837khnHFX1DbPY8cv97fSNd25T19Fjgv4yekGd"},"createdAtEpoch":535,"closedAtEpoch":549,"createdAtBlockHash":"0xd4b8c212b7d09a62c5a754bc7612237930d8c296472a2e4d64f190f21ad4c01a"},{"allocation":"0xbAB4406315461fe1D49F7EE596f7DCc80BF64b53","deployment":{"bytes32":"0x2b4f18b8b904abe5fe6dc93e4f42c38e9d7a037b8a765345c128dfd6d2c8e6e3","ipfsHash":"QmRFiCChCVwbSJ7VuEYiesEb5wHo89CuKyYS2digs9mZRL"},"createdAtEpoch":516,"closedAtEpoch":543,"createdAtBlockHash":"0x7a94d687ef76256d86a24cfdb878a2ee947e192270172b747b7a0947e58830ce"},{"allocation":"0xCA8150f09c82Db28672bf218e480F57D5Bf207B6","deployment":{"bytes32":"0x1cbe978fdda55597c52276bbbcd5492b6b1746ff8d129efb5477d4aa9d53650e","ipfsHash":"QmQGrgikMWew2Rt2oD88vjCHAe9KEzZkpujUJAHmw834KF"},"createdAtEpoch":524,"closedAtEpoch":542,"createdAtBlockHash":"0x08d47dcd5fabbdef00a621c61d7bc5d9dd32f3e1f16c26501d3695aab0bfb70d"}],"restakeRewards":false,"msg":"4 allocations are eligible for rebate pool claims"}
{"level":40,"time":1658159085626,"pid":999887,"hostname":"indexer-agent","name":"IndexerAgent","component":"Network","indexer":"0x87Eba079059B75504c734820d6cf828476754B83","operator":"0xC56961836857210e256D71c91a62e90865075380","action":"ClaimMany","err":{"type":"IndexerError","message":"Failed to claim allocation","stack":"IndexerError: Failed to claim allocation\n    at indexerError (/home/ubuntu/.nvm/versions/node/v14.20.0/lib/node_modules/@graphprotocol/indexer-agent/node_modules/@graphprotocol/indexer-common/dist/errors.js:143:12)\n    at Network.<anonymous> (/home/ubuntu/.nvm/versions/node/v14.20.0/lib/node_modules/@graphprotocol/indexer-agent/node_modules/@graphprotocol/indexer-common/dist/network.js:993:60)\n    at Generator.next (<anonymous>)\n    at fulfilled (/home/ubuntu/.nvm/versions/node/v14.20.0/lib/node_modules/@graphprotocol/indexer-agent/node_modules/@graphprotocol/indexer-common/dist/network.js:5:58)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:95:5)","code":"IE016","explanation":"https://github.com/graphprotocol/indexer/blob/master/docs/errors.md#ie016","cause":{"type":"TypeError","message":"_a.gt is not a function","stack":"TypeError: _a.gt is not a function\n    at /home/ubuntu/.nvm/versions/node/v14.20.0/lib/node_modules/@graphprotocol/indexer-agent/node_modules/@graphprotocol/indexer-common/dist/network.js:969:124\n    at Array.sort (<anonymous>)\n    at Network.<anonymous> (/home/ubuntu/.nvm/versions/node/v14.20.0/lib/node_modules/@graphprotocol/indexer-agent/node_modules/@graphprotocol/indexer-common/dist/network.js:969:22)\n    at Generator.next (<anonymous>)\n    at fulfilled (/home/ubuntu/.nvm/versions/node/v14.20.0/lib/node_modules/@graphprotocol/indexer-agent/node_modules/@graphprotocol/indexer-common/dist/network.js:5:58)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:95:5)"}},"msg":"Failed to claim allocations"}

@hopeyen wrote this PR which should fix it https://github.com/graphprotocol/indexer/pull/437

Resolved in #437


Subscriptions: Rename start to start_date

Following up #718 with a single simple test

👋 Any way I can help this getting merged ? Been using it in my test suite since I made this PR and it works fine :)


Csv import

Somehow think I got csv import implemented.
I made a testfile.csv that I stuck in lib/assets because I had no idea where it really should go.
This could use a lot of error handling, for sure.

Travis is unhappy because I accidentally included the grade 0 => K feature branch here too.  Oops.


Solution Testing - Prod/Test

Send a test file for each CUC location today to ADPH.

9/3/21 - ADPH validated the messages and gave the OK to send results to Production.
9/7/21 - JimD has turned on results to HHSProtect.


stack traces on running functests

with functests we get:
grep -rn "read/write on closed pipe" /var/log/swift/proxy.log
its friday and i don't want to forget. we should check this later.

It's likely that lame copy middleware.


Add Documentation to Github Page

Utilizing mdBook to generate documentation on how to setup and run the CLI.
This is maintained through git actions where when main is updated, it will push the changes to a gh-pages branch that will then deploy to the repo's github page.
Setting up the github page settings will be required once this is considered good to go.
Any feedback on the content of the documentation is welcome and the current version can be viewed here
Fixes #39

Once you are done with the changes, can you rebuild the mdBook and have it published in the same location or somewhere else for me to see? I'm checking again on https://valefar-on-discord.github.io/ethstaker-deposit-cli/ and it's the original PR without your changes.

I believe I updated everything.  There is a lot going on here so go easy on me if I missed something.
I did update the current version: https://valefar-on-discord.github.io/ethstaker-deposit-cli/

Noticed a version difference with 0.4.10(action) and 0.4.40(running locally)
and then noticed this commit:
https://github.com/rust-lang/mdBook/commit/65dae11e470450bddbe8451e7c3b5d27ca01f30a
Updating from 0.4.10 to 0.4.40 fixed the styling issue and docs look aligned now.


Details page - Show tooltip on user detail page if the email is too long

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Navigate to a conversation with a user that has a long email
Open the user detail page
Hover the cursor over the email

Expected Result:
There should be a tooltip to view the email address
Actual Result:
There's no tooltip to view the email address.
Workaround:
Unknown.
Platform:

Where is this issue occurring?

Web
Desktop App

Version Number: 1.1.2-5
Reproducible in staging?: yes
Reproducible in production?: yes
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation

Expensify/Expensify Issue URL:
Issue reported by: @akshayasalvi
Slack conversation: https://expensify.slack.com/archives/C01GTK53T8Q/p1632614361076100
View all open jobs on GitHub

Triggered auto assignment to @MitchExpensify (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

Solution
In CommunicationsLink.js,  we can add Tooltip only to the else block as it is for wide screen width.
Replace the {props.children} in the else (after : ) block with the following code:
<Tooltip text={props.value}>
      <View style={[styles.communicationsLinkWidth]}>
          {props.children}
      </View>
  </Tooltip>

and in style.js add the following:
communicationsLinkWidth: {
    maxWidth: 320,
}

We need to wrap the props.children around a View so that the view doesn't break when we have a very long email address.

Reproduced and agree its valuable. This is n6-hold so not labeling eng just yet

On hold

On hold

@MitchExpensify Uh oh! This issue is overdue by 2 days. Don't forget to update your issues!

Not overdue

I will be reviewing the PR and I will let you know @thienlnam when this is ready for final review and possibly for merge. See More

Should https://github.com/Expensify/App/issues/5542#issuecomment-928582857 be implemented as a solution or just add a tooltip for all cases?
I don't see an official acceptance of the proposal so it's unclear to me.

I didn't accept a proposal specifically yet but since we already hired @akshayasalvi we will just continue working through this job.  I asked for clarification https://expensify.slack.com/archives/C01GTK53T8Q/p1635784104290300?thread_ts=1632614361.076100&cid=C01GTK53T8Q here about the tooltip

We still have the Company Offsite hold label on this issue.

@Christinadobrzyn Didnt understand the hold. The PR is merged to the main branch already

@Christinadobrzyn My bad, forgot about the label and merged the PR already.  Let's do the standard 7 day regression wait and then just pay this one out

@Christinadobrzyn @thienlnam Is the production deployment for this PR delayed due to hold? It's been on staging for 8 days already and now I'll have to wait for production deployment + 7 days for the payment.

We've delayed all PRs due to the hold.  Since I made the mistake and merged ahead of time @Christinadobrzyn, let's pay this out.  It passed staging QA

The solution for this issue has been :rocket: deployed to production :rocket: in version 1.1.14-4 and is now subject to a 7-day regression period :calendar:. Here is the list of pull requests that resolve this issue:

https://github.com/Expensify/App/pull/6140

If no regressions arise, payment will be issued on 2021-11-22. :confetti_ball:

Alright - 7 days in production have passed! 🎉
Paid @akshayasalvi $250 + 250 bonus for the company offsite delay. Closing this job in Upwork and this GH.


Absolute Path  Problem

Hey guys, i have a new problem:
I try create new project but when i write the absolute path, i output this error:
"Absolute Path Only Allowed for /var/zpanel/hostdata/zadmin/public_html/codiad,/home"
I try absolute path like /public_html/projec1 and /public_html/ and /home/zadmin/project1, and doesnt work.
Any suggestion ?
Tnks!

Even if it's an old post but staying fully relevant, i would like to add a notice done :
In the "Explore" pan, when using the contextual menu (right click) on a file belonging to a project documented with an absolute path like '/var/www/sda/0/e/myDomain', the list of the proposed tasks is not the same compared to file in the normal Folder projects,

"download" & "preview" features are missing.
Is it a normal feature or ?

Still relevant in 2018 (end of it). Anyway, the way I fixed my issue is replacing:
define("WHITEPATHS", BASE_PATH . ",/home");
with
define("WHITEPATHS", BASE_PATH . ",/var/www");
This could also work if you already have projects setup in /home
define("WHITEPATHS", BASE_PATH . ",/home,/var/www");


bt: Add pre_install & persist

Closes #9681

[x] I have read the Contributing Guide.

/verify

/verify


set up a bank account

I want Shields to be its own thing. I don't want Gittip to own Shields forever. I want to bring Shields up to a certain level and then see it leave the nest. We should set up a bank account for Shields and run hosting and other operating costs for Shields through it.

As mentioned at the time, I don't think this is a good idea. Closing and leaving it up to @espadrine to re-open if he chooses.


4.2 include images, separate people from books and times

The 17 combined people/books/items were split in 3 different files.
The first images were included.
First fix to relabel persons as people
Include prophecy from Daniel 2 and Daniel 7

I changed 107 files? Not really, the test case from reportlab was included in the python/test/tests folder to get some insight to SVG import and the use of gradients. Eventually I just painted 50 overlapping boxes with slightly different color values. Adds 20 kByte to the final file size, but also just works.

Looks ok.


Add CI

Once we have automated UI tests, add CI via wercker for this project too

I have protected the master branch from failing wercker build - now we just need to get the build to pass!

So I downloaded docker and tried to package the app, when I run it I get the same type of errors so I'm going to assume it's a reference issue isolated to containers I'll play about tonight to see if I can work out why

Closing as this is now sorted #15


[Playback]: Icon from the latest message is shown on the first playback screen

EPAM AI DIAL chat version
0.14.0
What happened?

Create the conversation based on model1 -> send a message -> in chat setting change the model to model2 -> send a message
Create the Playback chat
Check the first screen -> model2 is on the main screen -> bug

Expected result: model1
Note: if to navigate playback chat till the end and move to the first screen, model1 is shown
Confidential information

[X] I confirm that do not share any confidential information

Because of the feature #1656 was not released, the ticket is not valid. We will return and re-test it, after new feature implementation.


How to remove Pickadate from element

Is there any way, how to destroy/remove instance of this plugin from element?
Something like other plugins have el.select2('destroy') ?
Thanks

How is this achieved currently?


kube-proxy panics after a LoadBalancer service is re-created

Kubernetes version: 1.20
Windows version: Windows Server 2019 10.0.17763.1817
Issue occurs on OpenShift Container Platform v4.7.3
kube-proxy panics when a LoadBalancer service is re-created.  The LoadBalancer was associated with a deployment with multiple pods spread across nodes.
LoadBalancer Service:
apiVersion: v1
kind: Service
metadata:
  name: win-webserver
  labels:
    app: win-webserver
spec:
  ports:
    # the port that this service should serve on
  - port: 80
    targetPort: 80
  selector:
    app: win-webserver
  type: LoadBalancer

Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: win-webserver
  name: win-webserver
  namespace: default
spec:
  securityContext:
  selector:
    matchLabels:
      app: win-webserver
  replicas: 3
  template:
    metadata:
      labels:
        app: win-webserver
      name: win-webserver
    spec:
      podSecurityContext:
      tolerations:
      - key: "os"
        value: "Windows"
        Effect: "NoSchedule"
      containers:
      - name: windowswebserver
        securityContext:
          windowsOptions:
            runAsUserName: "ContainerAdministrator"
        image: mcr.microsoft.com/powershell:lts-nanoserver-1809
        imagePullPolicy: IfNotPresent
        command:
        - pwsh.exe
        - -command
        - $listener = New-Object System.Net.HttpListener; $listener.Prefixes.Add('http://*:80/'); $listener.Start();Write-Host('Listening at http://*:80/'); while ($listener.IsListening) { $context = $listener.GetContext(); $response = $context.Response; $content='
Windows Container Web Server
'; $buffer = [System.Text.Encoding]::UTF8.GetBytes($content); $response.ContentLength64 = $buffer.Length; $response.OutputStream.Write($buffer, 0, $buffer.Length); $response.Close(); };
      nodeSelector:
        beta.kubernetes.io/os: windows

The kube-proxy exe was run as:
kube-proxy.exe --v=4 --proxy-mode=kernelspace --feature-gates=WinOverlay=true --hostname-override=ip-10-0-129-184.ec2.internal --kubeconfig=c:\k\kubeconfig --cluster-cidr=<IP_ADDRESS>/24 --log-dir=C:\var\log\kube-proxy\ --logtostderr=false --network-name=OVNKubernetesHybridOverlayNetwork --source-vip=<IP_ADDRESS> --enable-dsr=false

Here is the portion of the logs where the panic occurs:
time="2021-03-18T19:55:37Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:55:37Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 13"
time="2021-03-18T19:55:37Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
E0318 19:55:42.028808    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:45.209619    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:48.125508    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:51.930551    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:52.025381    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:52.121118    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
time="2021-03-18T19:55:55Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:55:55Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
time="2021-03-18T19:55:55Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:55:55Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 13"
time="2021-03-18T19:55:55Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
E0318 19:55:55.311274    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:55.416569    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:55.499572    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:55.640196    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:55.731000    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:55.816898    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document.  Not applying any policy
E0318 19:55:57.547539    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:57.636353    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:57.730110    3808 proxier.go:1188] Policy creation failKubernetes version: 1.20
Windows version: Windows Server 2019 10.0.17763.1817
ed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:57.883467    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:57.972311    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
E0318 19:55:58.472063    3808 proxier.go:1188] Policy creation failed: hcnCreateLoadBalancer failed in Win32: The reference is invalid in the JSON document. (0x803b001c) {"Success":false,"Error":"The reference is invalid in the JSON document. A Reference is required","ErrorCode":2151350300}
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 13"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 12"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 13"
time="2021-03-18T19:56:00Z" level=info msg="currentVersion.Major < versionRange.MinVersion.Major: 9, 10"
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x205c0dc]

goroutine 100 [running]:
k8s.io/kubernetes/pkg/proxy/winkernel.(*Proxier).syncProxyRules(0xc0000cd500)
        /remote-source/build/windows-machine-config-operator/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/proxy/winkernel/proxier.go:1124 +0x9dc
k8s.io/kubernetes/pkg/util/async.(*BoundedFrequencyRunner).tryRun(0xc00028c5a0)
        /remote-source/build/windows-machine-config-operator/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/util/async/bounded_frequency_runner.go:292 +0xbe
k8s.io/kubernetes/pkg/util/async.(*BoundedFrequencyRunner).Loop(0xc00028c5a0, 0xc0000820c0)
        /remote-source/build/windows-machine-config-operator/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/util/async/bounded_frequency_runner.go:203 +0x21b
k8s.io/kubernetes/pkg/proxy/winkernel.(*Proxier).SyncLoop(0xc0000cd500)
        /remote-source/build/windows-machine-config-operator/kubernetes/_output/local/go/src/k8s.io/kubernetes/pkg/proxy/winkernel/proxier.go:752 +0x72
created by k8s.io/kubernetes/cmd/kube-proxy/app.(*ProxyServer).Run
        /remote-source/build/windows-machine-config-operator/kubernetes/_output/local/go/src/k8s.io/kubernetes/cmd/kube-proxy/app/server.go:778 +0x855

Link to code for reference: https://github.com/kubernetes/kubernetes/blob/v1.20.4/pkg/proxy/winkernel/proxier.go#L1124
Steps to reproduce:

Create LoadBalancer
Create deployment
Delete LoadBalancer
Re-create LoadBalancer

At this point kube-proxy will have crashed.

Full kube-proxy logs:
kube-proxy.exe.ERROR.txt
kube-proxy.exe.INFO.txt
kube-proxy.exe.WARNING.txt

This looks like an issue with kubeproxy and not the the platform it's self?  Could you open an issue in https://github.com/kubernetes/kubernetes?

Sure thing. Created it here https://github.com/kubernetes/kubernetes/issues/100384

Thanks both - sorry for the delay on triaging this. I'll close the issue for now as this is being investigated elsewhere.


App

Does this issue occur when all extensions are disabled?: Yes/No

VS Code Version:
OS Version:

Steps to Reproduce:

Ok


Disable and Enabling Extensions on a workspace

I want to Enabled/Disabled extensions can stored in workspace settings instead of local storage  cache.

/duplicate of #40239


not seeing the branch i want to use for my pipeline

Describe your issue here
after creating the github integration, under pipeline im unable to see master and the branch I am working on. is there a branch limit?

Useful
Info

Versions
Rancher master UI: v2.0.76

Route
authenticated.project.pipeline.pipelines.edit

no longer an issue


make tests for new legend stuff

@lindsaycarr any luck on this?

yep, I added quite a few for legend https://github.com/USGS-R/gsplot/blob/master/tests/testthat/test-legend.R


0 relative altitude showing in ForeFlight intermittently

Not sure if it is happening in other apps.
Restarting the app works for me, but some users are reporting that restarting the app doesn't fix the issue.

confirming that restarting the app doesn't fix this. restarted the app, reconnected wifi, restarted stratux services -- still showing all zeros, despite (when tapped) showing the correct altitude. (this is all from 1090 data).

Do you any UAT signals on the ground? I need some dump978 captures to reproduce it.

Not locally; I'll take a drive to where I seem to get them from time to time.
Why dump978 captures, if this is 1090 data? Do you mean you want some dump1090 captures? From its --net port, or from the stuff it dumps to console?

Most people are having the issues while seeing UAT traffic

On my last trip I found out my home base airport actually has a tower on premises. If you'd like dumps of anything, let me know - I'm heading back over there tomorrow.

I am seeing this as well.  Happy to capture some data for you if you can help me out with how to do that.  Is it as simple as /usr/bin/dump1090 > capture.txt?

https://github.com/cyoung/stratux/commit/77b86a534f04171fa6cc752eef43dc90ac1aa856
 globalSettings.ReplayLog = false

Change this to true. Give it a run, try to get the bug to reproduce, then send over /var/log/stratux*.log.

Alright, thanks I'll give it a shot later tonight.

So I might need a little help here as I'm not familiar with GO and having trouble compiling.  I downloaded Google GO from here http://dave.cheney.net/unofficial-arm-tarballs.  I tried to run 'go build' on the source code but it's giving me this error:
pi@raspberrypi ~/stratux $ go build
# _/home/pi/stratux
/usr/bin/ld: cannot find -ldump978
collect2: ld returned 1 exit status

I must be doing something wrong.  I ran make and saw gen_gdl90 was created.  So I copied that version over the one in /usr/bin.  I restarted the Pi and fired up Foreflight.  I did not see any traffic in Foreflight, however the web ui indicated about 1500 1090ES messages.  Looking in /var/log/stratux.log I see the following hundreds of times, but nothing else of any value:
2015/09/06 00:43:14 err parsing lat (): strconv.ParseFloat: parsing "": invalid syntax
2015/09/06 00:43:14 err parsing lng (): strconv.ParseFloat: parsing "": invalid syntax
2015/09/06 00:43:18 err parsing lat (): strconv.ParseFloat: parsing "": invalid syntax
2015/09/06 00:43:18 err parsing lng (): strconv.ParseFloat: parsing "": invalid syntax

I noticed today while flying with 77b86a5 that this was happening.  I restarted the Pi without success, then I closed and opened Foreflight which also didn't work.  What did work was killing Foreflight (double tap home button and flick Foreflight off the screen).  After that it was fine for the rest of the flight.  This leads me to believe it's something to do with the link to Foreflight and not the actual ADS-B message processing.  Any ideas on how to further debug this? Does the 'logging' setting under the Foreflight devices menu do anything?

I had the same experience as @gms5002 when flying yesterday.  It operated normally, showing altitude as expected, for about 30 minutes.  After that, we noticed the 0 for altitude difference.  Force-quitting ForeFlight resolved the issue for the remainder of the flight (about another 30 minutes).

@gms5002
"err parsing lat (): strconv.ParseFloat: parsing "": invalid syntax" is normal.
I'm building an image now to send back debug info, will post it shortly with instructions.

https://www.dropbox.com/s/t0w7dng01jxbz9n/stratux-debug-77b86a534f-09062015.img.zip?dl=0
Send over http://<IP_ADDRESS>/logs/stratux-es.log
and
http://<IP_ADDRESS>/logs/stratux-uat.log
with a description of the issue. Can attach the files here.

I was flying with @JohnOCFII when we saw the bug. We were testing with two iPads. One flipped to showing "0" relative altitude, while the other continued to indicate the correct relative altitude.
With a Stratus 2, I've occasionally seen the relative altitude go up to the MSL altitude of the target (i.e. it believes its own altitude is 0' MSL). Force quit likewise forces normal behavior. Wonder to what extent this isn't just a Stratux bug, but also an interaction / bug in ForeFlight .

I will do some testing today with the build from @cyoung and try to nail down steps to recreate the issue.

Alright, I believe this will procedure recreate the issue every time:

iOS 8.4.1
Foreflight 7.2 (1730)

Start up Foreflight and Stratux and pair them.
Go to the maps page in Foreflight and verify you are seeing some traffic

Remain on the maps page (not sure if this matters but it's what I did in the test)

Force quit Foreflight (double tap home button, swipe Foreflight off the top of the screen)
Restart Stratux via SSH (sudo shutdown -r now)
Wait for stratux wifi network to appear and connect to it
Open Foreflight

All traffic will show 0 relative altitude

Force quit Foreflight
Open Foreflight

All traffic will now show correct relative altitude

The logs cover one run through steps 4-8 over the course of a couple minutes. It seems I can only attach images to the issue so I've uploaded here: https://www.dropbox.com/sh/zfsngdt6kmmpwb5/AACsA6YIqdHNXihjPu5-ZK4Ia?dl=0

@gms5002, thanks for the details and for uploading the logs!
It has to do with receiving traffic before acquiring the current GPS altitude, or if the GPS lock is lost momentarily. Your procedure works because traffic is being sent (and FF apparently receives it before) the first GPS lock is acquired on startup. It should be remedied when using external GPS on the stratux. If not, who wants to submit a bug report to FF?...

If you disable Location Services for FF in your iPad settings it will do it also, you have to restart, though.

Hmm, interesting.  I haven't pulled the trigger on the RY835AI yet, so I can't verify whether the external GPS fixes it.  However, it appears as though if you start Foreflight, let it find the GPS position, and then turn on the Pi it works as expected.  Oddly enough, I can even switch into my checklist app for a few minutes (simulating a run up).  When I switch back to Foreflight, it finds its position again but the traffic altitude is still showing up correctly.
Is it possible to add a small delay (perhaps 5-10 seconds) before the stratux starts sending data to Foreflight after pairing?

Uncomment https://github.com/cyoung/stratux/blob/master/main/network.go#L124-L127
See https://github.com/cyoung/stratux/blob/master/main/network.go#L148-L152
Yeah, but I don't think it'll fix it. Can play around with those parameters above

I uncommented https://github.com/cyoung/stratux/blob/master/main/network.go#L124-L127 and that seems to have resolved the startup issue I described above.
If I disable location services, force quit and reopen Foreflight I see all zero altitudes as you mentioned before.  However, now when I turn location services back on and switch into Foreflight the altitudes start displaying (without force quit and restart).
I'm not sure how to simulate a loss of GPS in flight though.  I tried going into my basement, putting the ipad under a metal pot, and wrapping said pot in aluminum foil...Foreflight just mocks me and remains on 10m accuracy.  I want to try to find out what happens if Foreflight remains open during the entire process of losing and regaining GPS position.  Can anyone get Foreflight to lose GPS position? Perhaps if you put the iPad under some bricks or cinder blocks in might work.
@cyoung Do you want a pull request for the changes? I'm not sure if there are any side effects from the change.

No. The side effects of the change are that port 4000 will not receive data for non-FF users. Will either need to add something to work around that or just wait for an FF bug fix.

Optionally, we could make a "reset" button on the interface. It just needs to stop sending all traffic reports for a period of time to give the iPad time to get a GPS altitude.

And is it correct that stratux finds clients by checking connected dhcp addresses and starts broadcasting over udp port 4000 to everyone...there is no formal handshake?

Not for anything other than FF that I know of, but I'm sure there's a reliable way to detect it for anything -- just needs some research. #20 as it seems you've seen already.

Just tested FF 7.3. Looks good. Anyone want to go flying with it that had the problem showing up quite often?

I'm going to be safety piloting for a friend sometime this week, I'll check it out with 0.3b1 or whatever is current at the time.

Thanks!

You were able to reproduce it on the ground, right? Can you try to do the same as you did before

Just tested from the ground and it doesn't seem like there was any change for me.  It's still reproducible with the steps above.  Both workarounds (Starting ForeFlight before connecting to stratux network and restarting ForeFlight when the issues occurs) still work.

But does it recover after a moment or two?

Negative.  I did steps 1-6 above, opened ForeFlight and saw all 0 altitudes.  Then I waited about 5 minutes, still showing all 0s.  I then went further away from the house to acquire new traffic, and even the new targets that popped up had 0 altitude.  I'm using 0.3b1 and ForeFlight 7.3 (1777).

I had this bug intermittently as well. I'll have a trip report this weekend. Did some rough testing at work today and saw a ton of KSEA traffic, no instances of 0 altitude (0.3b1 + 7.3).

Commit 5dda5d6 seems to greatly improve the behavior of this with regards to to the start up issue I listed above.  That one is now resolved.  However, I did see it occur twice while testing for #20 when I switched between apps, but I haven't been able to nail it down to reproducible steps.

FF 7.3.


SDK fails silently if P2P TCP port is in use

SDK silently fails to start the peer protocol server, making the whole startup fail without a clear reason.
This issue is about making that clear somehow in the logs and status.
We should consider picking a random port if no port was set by the user and 4444 is in use by something else (maybe another issue, may need discussion and input @jackrobison @lyoshenka ).

Or add better error logging to not show generic error message and no other info. That would save time debuggin other users issues too.

Hi all, I added a log error to that problem, do you think it's enough?


Suspicious exception for playback of xyz. This video is not available

Version of youtube-source: 1.8.2
The search query, URL, playlist or video ID that triggered the issue:  for example: https://www.youtube.com/watch?v=dQw4w9WgXcQ (But basicly any video, also with ytsearch)
Code Example:
// Init in Main
this.playerManager = new PlayerManager();
YoutubeAudioSourceManager ytSourceManager = new YoutubeAudioSourceManager(/*allowSearch:*/ true, new Client[] {
    new MusicWithThumbnail(), new WebWithThumbnail(), new AndroidTestsuiteWithThumbnail()
});
//ytSourceManager.useOauth2(null, false);
ytSourceManager.useOauth2(Config.YTOAUTH, true);
audioPlayerManager.registerSourceManager(ytSourceManager);
AudioSourceManagers.registerRemoteSources(playerManager, dev.lavalink.youtube.YoutubeAudioSourceManager.class);

// AudioLoadResult
	@Override
	public void trackLoaded(AudioTrack track) {
	    Queue queue = controller.getQueue();
	    if (position == null || position >= queue.getQueuelist().size()) {
	        queue.addTrack(track);
	    } else if (position == 0) {
	        controller.getPlayer().playTrack(track);
	    } else {
	        queue.addTrackAtPosition(track, position);
	    }
	}

// PlayerManager
	public void loadAndPlay(TextChannel channel, String trackUrl, User user) {
        MusicController controller = getController(channel.getGuild().getIdLong());

        Main.INSTANCE.audioPlayerManager.loadItemOrdered(controller, trackUrl, new AudioLoadResultHandler() {
            @Override
            public void trackLoaded(AudioTrack track) {
                controller.getQueue().addTrack(track);
            }

Exception and Stacktrace:
20:38:06.209 [lava-daemon-pool-playback-1-thread-1] DEBUG com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor - Common failure for playback of dQw4w9WgXcQ: This video is not available

and
2024-09-26 11:41:45.154 [lava-daemon-pool-playback-1-thread-1] [WARN ] c.s.d.l.t.p.LocalAudioTrackExecutor - Suspicious exception for playback of dQw4w9WgXcQ
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: This video is not available
	at dev.lavalink.youtube.track.YoutubeAudioTrack.process(YoutubeAudioTrack.java:102)
	at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:109)
	at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$2(DefaultAudioPlayerManager.java:339)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1570)

I have transferred your issue to youtube-source as it's predominantly based around problems with YouTube.
Please could you edit your issue with the additional information requested in our issue template.
Additionally, for the Twitch issues, please open a separate issue on the Lavaplayer repository. Make sure to provide the identifier of the channel you are having issues loading.

Switching to this worked for me:
new YoutubeAudioSourceManager(true, new WebWithThumbnail(), new AndroidMusicWithThumbnail(), new TvHtml5EmbeddedWithThumbnail(), new MusicWithThumbnail())
web client and music client seem broken

Can confirm. After changing part of my code from this issue and then using your suggestion, YouTube Playback works again.

btw. this issue also somehow broke another sourcemanager for me, so maybe this was at fault for your twitch issue too

I tried applying the constructor settings in the comment above, but it failed.
but this changes worked.
thx to @xthesebx. you gave me a hint!
[before]
// allowSearch: true , allowDirectVideoIds: true , allowDirectPlaylistIds: true...
new YoutubeAudioSourceManager(true, true, true,
new Client[]{
new Music(),
new Web(),
new AndroidTestsuite()
});
[after]
new YoutubeAudioSourceManager(true);
I tried playing youtube source

Closing as stale. For anyone who stumbles upon this issue, update your client list.


Q: saving GAT object

@dengemann @agramfort
I have started looking at how we should save the GeneralizationAcrossTime objects.
I originally thought of using a simple pickle.dump it, but the disk usage really quickly climbs up (mainly because of the number of estimators).
Would you have any tips to circumvent this issue? For instance, as by default we use clf=pipeline(scaler, svc), I thought of scaling the svc.coef_ and saving a pipeline(scaled_svc) so as to avoid keeping scaler.mean_ and scaler.std_ (dims = 2 x n_features x training_times x n_folds), but I'm not sure whether this is a useful and valid approach.

I am afraid pickle is the less ugly way. You can compress though. The other
solution will be too custom and fragile I suspect.

Ok thanks


add psa adapter to latest

RE-CHECK!

Automated adapter checker
ioBroker.psa

:thumbsup: No errors found

[ ] :eyes: [W400] Cannot find "psa" in latest repository

Add comment "RE-CHECK!" to start check anew

fix issue but I prefer the interval to make it more robust against connection problems

RE-CHECK!

Automated adapter checker
ioBroker.psa

:thumbsup: No errors found

[ ] :eyes: [W400] Cannot find "psa" in latest repository

Add comment "RE-CHECK!" to start check anew

@TA2k
lol https://github.com/TA2k/ioBroker.psa/blob/master/io-package.json#L26 :))
Rest is fine


validate mapping with json schema

avoid annoying failures caused by an error in the  mapping.yaml by validating it with the json schema.
https://github.com/networknt/json-schema-validator looks good, it is using jackson and avoids having another json/yaml parser dependency.

.. this should also help to keep the schema up to date

it doesn't work as expected, the validator does not fully understand the schema (look like allOf does not work) and reports false errors.
IntelliJ doesn't complain and it validates a mapping, so the schema itself seems to be correct.


Made the tables responsive

Fixes #1258
Description
https://praveen-murali.neetorecord.com/watch/4899684d-b7e7-4401-9068-2c334a05dfad

Made the tables responsive.

After

Checklist

[ ] I have made corresponding changes to the documentation.
[ ] I have updated the types definition of modified exports.
[ ] I have verified the functionality in some of the neeto web-apps.
[x] I have added the necessary label (patch/minor/major - If package publish
is required).

Reviewers
@praveen-murali-ind _a

cc @sandip-mane


Nginx config

Hi guys,
Wondering if you could post a sample nginx config. I am only using the load balancer and have made a few changes. Everything is working except for metadata images on Android clients. Still going through the process of diagnosing but thought your supported nginx config could help.
Great work on the project!
Thanks,

https://gist.github.com/drouarb/a58d0e366ca6a018f65593479a414801

Thanks for this. Unfortunately this is not the issue...
Just as a question for isolating down my issue, I assume you have tested and seen all metadata images loading correctly on Android clients?

For reference, I've found the error. Android clients do not support http2 and if you enable http2 on any nginx virtual servers it enables on all of them.
Great work on the load balancer! Although I'm not using the Transcoder the LoadBalancer is exactly what I was looking for and is fantastic!


Unranked Summoner - APIException

The following code does not work for any unranked players in a mixed rank game (both ranked & unranked players in the game).
for (League league : par.get(i).getSummoner().getLeagueEntries()) {
    LeagueEntry entry = league.getParticipantEntry();
    if (league.getQueueType().name().equals("RANKED_SOLO_5x5")) {
        solo_queue_ranks[i] = league.getTier() + " " + entry.getDivision() +
                " " + entry.getLeaguePoints();
        break;
    }
    else {
        solo_queue_ranks[i] = "";
    }
}

I get an APIException 404 Not Found:
com.robrua.orianna.type.exception.APIException: A NOT_FOUND (404) error was received from the server for URI https://na.api.pvp.net/api/lol/na/v2.5/league/by-summoner/32172885/entry?api_key=744e79b3-a84f-49c2-aa78-4fab3d9b0401
`

This is the intended behavior when the API sends a 404 error. You should use a try/catch block to react appropriately in the context of your application if the summoner has no leagues.
Also, you'll want to regenerate your API key as it's shown in this comment.

Thanks, I fixed it.


Implement Drag and Drop

Currently, users can only upload images through a file input button in the OptiSnap image compressor tool. We should implement a drag and drop feature that allows users to easily upload images by dragging them from their file explorer and dropping them onto the tool's interface.
Tasks

[ ] Research and select a suitable drag and drop library or framework.
[ ]  Design and implement a UI component for the drag and drop functionality.
[ ]  Handle the drag and drop events to capture the dropped image files.
[ ]  Validate the dropped files to ensure they are valid image formats.
[ ]  Update the UI to display the dropped images and proceed with the compression process.
[ ]  Test the drag and drop feature across different browsers and devices.

Consider providing visual feedback to indicate the successful drop and any potential errors.
Ensure compatibility with keyboard-based file selection for accessibility purposes.

Hi @Frenziecodes, I want to give it a try, I will give my best to implement it.

Thank you @Alkaison for showing interest. I have assigned it to you


minor fixes and a man page

Thanks Colin! Changes are pushed to master.
Later on we may do some mods in the man page.


fix(declarative) do not mis-detect mesh mode

When using declarative config and a cluster_ca is not declared,
mesh mode cannot be used. This means that mesh_alpn is not declared.
When performing a proxy call to the SSL port with wget like this:
wget https://localhost:8443/ --no-check-certificate

we get to a state where getssl() returns a value but ssl:getAlpnSelected()
returns nil. We need to avoid this check when mesh_alpn is not set.
(Interestingly, this happens with wget but does not happen with curl -k.)
Fixes #4497.

You saved my day. Thanks !
I've got the issue when setting replicas: 2 (vs replicas: 1) with a DB-less Ingress Controller deployment.


Cant put market order

Hey , I made new market pair, ltc / rvn (at exchange wallet got 9 rvn and 0 ltc).
I can't put rvn sell order, to be able put it on market I need to have some vot.
Also is it normal that I can execute my own orders and pay fee?

most likely you have wrong pusher settings. had same problem.


Ugly Stories on Firefox and Safari

Stories are not well displayed on Firefox 35 and Safari
Firefox: 35, Mac OSX 10.10.2
Safari: 8.0.3, Mac OSX 10.10.2

fixed on version 1.1.0


ed: 1.19 -> 1.20

Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@ofborg eval

eval failed as:
building '/nix/store/zhmmgn0dw2mm8s985srdl6b95yxm131h-ed-1.20.tar.lz.drv'...
error: hash mismatch in fixed-output derivation '/nix/store/zhmmgn0dw2mm8s985srdl6b95yxm131h-ed-1.20.tar.lz.drv':
         specified: sha256-pXJJG5p5hUZRiAmF0w3DaI7Z2qLCBP1JNYAuJQ//fAE=
            got:    sha256-xgMN7+auFy8Wh5Btc1QFTHWmqRMK8xnU5zxQqRlZxaY=

Looks like unstream re-compressed the tarball:
$ diffoscope /nix/store/shg4k02xmwxpklajwvjp1va3swb4xrad-ed-1.20.tar.lz /nix/store/a1gfpn66fykb6hrq9n79l6zp4ab0khka-ed-1.20.tar.lz
--- /nix/store/shg4k02xmwxpklajwvjp1va3swb4xrad-ed-1.20.tar.lz
+++ /nix/store/a1gfpn66fykb6hrq9n79l6zp4ab0khka-ed-1.20.tar.lz
├── filetype from file(1)
│ @@ -1 +1 @@
│ -POSIX tar archive
│ +lzip compressed data, version: 1
├── filetype from diffoscope
│ @@ -1 +1 @@
│ -TarFile
│ +LzipFile

Updated the hash.


Can't open Application when touch in Notification android

In version 1.2.52, it have this bug. You can fix it
Go to PushNotification.java in folder: react-native-notifications/android/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
Add this function in end class PushNotification
protected void launchOrResumeApp() {         final Intent intent = mAppLaunchHelper.getLaunchIntent(mContext);         mContext.startActivity(intent);     }
After, add to call this function in digestNotification function, like:
if (!mAppLifecycleFacade.isReactInitialized()) {             setAsInitialNotification();             launchOrResumeApp(); // call function             return;         }
and add to call in function dispatchUponVisibility, like:
protected void dispatchUponVisibility() {         mAppLifecycleFacade.addVisibilityListener(getIntermediateAppVisibilityListener());         launchOrResumeApp(); // // call function     }
Hope it help you.

This solution works if the app is not closed.
If the app is closed, then tapping on the notification will not open the app and the notification will disappear from the notification center.

This solution works if the app is not closed.
If the app is closed, then tapping on the notification will not open the app and the notification will disappear from the notification center.
you can handle in JS code with Opened function to direction to screen that you need.

@huyvm I'm sorry, but your answer is a bit vague and I can't quite get a grasp on the solution. Could you please elaborate on the part where you say:

you can handle in JS code with Opened function to direction to screen that you need.

?
Thank you very much

Follow this code, in JS code:
NotificationsAndroid.setNotificationOpenedListener((notification) => { 	console.log("Notification opened by device user", notification.getData());         // direct to screen });


handleExternal support

So we can compose STM actions inside a managed process definition, allow clients and servers that reside on the same node to communicate over STM channels, queues, etc.

As per github's clever links, there is another use case for this in https://github.com/haskell-distributed/distributed-process-supervisor/issues/8.

@teh I think the issues being discussed at the bottom of https://github.com/haskell-distributed/distributed-process-supervisor/issues/8 are quite similar to your asks about interactions between warp handlers and managed processes in this library's API. The ability to write this seems pressing to me:
demo :: STM.TChan InputType -> Process (ProcessDefinition State)
demo broadcastChan = do
  rc <- liftIO $ dupTChan broadcastChan
  defaultProcess = [
      -- other things elided
      infoHandlers = [ handleExternal (readTChan rc) doStuff ]
  ]

Better still, would be the ability to wrap API handlers around an STM channel, such that we can write something like apiHandlers = [ handleCast (handleExtern (doStmStuff)) myHandler ]. This should, theoretically, be possible, since the various handleX functions already deal with abstractions around typed channels, and the matchSTM primitive has been available in distributed-process since around v0.5, allowing us to multiplex on matching arbitrary STM actions alongside typed channels and regular inputs to our mailbox.

@teh take a look at https://github.com/haskell-distributed/distributed-process-client-server/tree/tw/h-ext and let me know if that would meet your needs please? I think the 2-way STM stuff is totally concrete and the implementation is extremely simple (and based on idioms we use all over the place for handling typed channels).
Specifically, this test case exemplifies:
testExternalService :: TestResult Bool -> Process ()
testExternalService result = do
  inChan <- liftIO $ newTQueueIO
  replyChan <- liftIO $ newTQueueIO
  let procDef = statelessProcess {
                    apiHandlers = [
                      handleExternal
                        (readTQueue inChan)
                        (\s (m :: String) -> do
                            liftIO $ atomically $ writeTQueue replyChan m
                            continue s)
                    ]
                    }
  let txt = "hello 2-way stm foo"
  pid <- spawnLocal $ serve () (statelessInit Infinity) procDef
  echoTxt <- liftIO $ do
    -- firstly we write something that the server can receive
    atomically $ writeTQueue inChan txt
    -- then sit and wait for it to write something back to us
    atomically $ readTQueue replyChan

  stash result (echoTxt == txt)
  kill pid "done"

@hyperthunk thanks for keeping at it!  (I guess you mean https://github.com/haskell-distributed/distributed-process-client-server/commit/e20135fb6a2ae4dd283fa341315990ae1323b088 specifically?)
This isn't quite what I am doing but pretty close!

My IO is driven from warp, i.e. instead of me spawning a process that then runs liftIO I provide an IO callback that then runs a process. Though that may just be your example. I could pass in inChan and replyChan?
I still need to match the response back to a wai handler. A single chan means I need to carry extra structure around to do the mapping. Currently I just use the lexical closure of my Haskell function. Again by passing in the chans I'd get around that.
The warp handler spawns N green threads that then map on M processor threads. By spawning a single Process to handle this I am limiting throughput. I can probably spawn a pool of processes and use work-stealing, but at that point I am again re-inventing something that the IO scheduler does quite well already.

The boundary between callback-IO and CH is tricky, and the handleExternal covers a lot of use cases. I will try to rewrite my code with them.

@teh, yeah I get that your usage is a bit different. Here are some thoughts...
In terms of (1/2), it's totally up to you how you structure things. I would not use a single channel to go back to the warp handler either, since that would also be a potential bottleneck.
For (3), my advise is this: do not fight warp, and do not fight the runtime. The point about this feature in client-server, is that it allows you to read a value back in IO land using STM (and whichever flavour of STM you like to, it's not limited to TChan or TQueue at all). So currently you spawn a process for each request (or more accurately from what you've said, you spawn a process onto either each green thread or each capability/native thread. That's fine - you can keep doing that, just use the handleExternal capability to simplify your code if you want to read the results back without using runProcess. Notably handleExternal doesn't provide the monitoring infrastructure you're used to for error detection though, so what I would suggest is that you consider using it to implement a streaming input source.
I'll post a picture in a few mins..

Okay @teh having spent some time poking around in warp, I think the best thing for what you're doing is to simply fork a new process and wait on the result using stm, and tbh you could just use a TMVar and write the result of call to that. If you want to use handleExternal so that the server writes the reply directly, you can - using the branch I'm merging shortly - but I'm not sure how useful that really is. What would be better would be a means to issue call and have it wait on the STM result and monitor the server. I can see a way to do that, and will implement it this afternoon and send an update.

Thanks! That's the conclusion I came to as well, and that's what my code does. Sorry if I wasn't clearer about that. As long as the request is small and blocking it's pretty simple. But I'm am looking forward to handleExternal for stuff like websockets. It's a very natural fit. Thanks for adding it!

@teh okay, I've just pushed an improved mechanism for doing synchronous round trips - it'll simplify the server code (making it easier to follow, more transferable during potential refactoring, etc) and allows you to use whatever STM constructs you like to synchronise client and server.
Here's the example code from the tests... I'm going to break it down (and we can steal the markup from this comment to set up a doc page around it later on the wiki/website...)
data StmServer = StmServer { serverPid  :: ProcessId
                           , writerChan :: TQueue String
                           , readerChan :: TQueue String
                           }

We start out by defining a server handle, which is good practise for -cilent-server apps as per the docs/tutorials. We will use this to interact with the server process. Since we want to resolve it to a process (for monitoring) and in our test case, to kill it (once we're done), we add the relevant instances from -extras to make that easy:
instance Resolvable StmServer where
  resolve = return . Just . serverPid

instance Killable StmServer where
  killProc StmServer{..} = kill serverPid
  exitProc StmServer{..} = exit serverPid

The client part of the interaction uses a new function exposed through the Client module, callSTM, which takes an arbitrary STM action for writing and another one for reading, and then executes them both, whilst monitoring the server to ensure we get a failure message if it crashes (so we don't block indefinitely). Currently we can't read and then write atomically (and I'm not sure we want to here), but there is a way to expose that if we want to.
The callSTM implementation is very simple, and relies on awaitResponse from -extras, which does the relevant monitoring for us...
callSTM :: forall s a b . (Addressable s)
         => s
         -> (a -> STM ())
         -> STM b
         -> a
         -> Process (Either ExitReason b)
callSTM server writeAction readAction input = do
  liftIO $ atomically $ writeAction input
  awaitResponse server [ matchSTM readAction (return . Right) ]

Back to our code then, we implement the client side of our API using this function, and use the handle to (a) ensure we have the relevant STM data available to us, and (b) ensure nobody accidentally passes an invalid ProcessId or some such:
echoStm :: StmServer -> String -> Process (Either ExitReason String)
echoStm StmServer{..} = callSTM serverPid
                                (writeTQueue writerChan)
                                (readTQueue  readerChan)

Now for our server implementation. We create the STM actions, which as you can see from the client code involves two TQueues, one for writing requests and a second for replies. You could easily replace these with TChan or TMVar if you wished, though I'd be cautious about using blocking cells if I were you. Anyway, the client and server APIs simply deal with STM a and don't regulate this at all.
Given our input and output channels, we wire them into the server using the new handleCallExternal API, which works very much like handleCall except that it takes two STM actions, one for reading and another for writing back the replies. Since these are expressed as STM a (roughly speaking), you can do whatever you like just as with the client portion of the code. This is where wrapping up your server capability into an isolated module and exposing it only via a handle becomes important. Later on, when we start looking at Task and other APIs, we will build on (and build new) capabilities that abstract this kind of detail away from the application developer.
Here's our server code now:
launchEchoServer :: Process StmServer
launchEchoServer = do
  (inQ, replyQ) <- liftIO $ do
    cIn <- newTQueueIO
    cOut <- newTQueueIO
    return (cIn, cOut)

  let procDef = statelessProcess {
                  apiHandlers = [
                    handleCallExternal
                      (readTQueue inQ)
                      (writeTQueue replyQ)
                      (\st (msg :: String) -> reply msg st)
                  ]
                }

  pid <- spawnLocal $ serve () (statelessInit Infinity) procDef
  return $ StmServer pid inQ replyQ

Those STM implementation details don't escape the lexical scope of the launchEchoServer function, which I feel is important here, to minimise leaking information that API consumers shouldn't have to care about.
Finally, the test case, which simply launches the server, calls it synchronously, and puts the reply/response into our result:
testExternalCall :: TestResult Bool -> Process ()
testExternalCall result = do
  let txt = "hello stm-call foo"
  srv <- launchEchoServer
  echoStm srv txt >>= stash result . (== Right txt)
  killProc srv "done"

So, there you have it. I'll try and get this merged soon. I think callSTM is a neat way to encapsulate synchronous communication between non-CH clients and CH servers. For non-synchronised, and generally more nuanced cases, handleExternal should be general enough to support almost all other use-cases.

Oh, and I should point out that because the handleCallExternal API uses CallHandler s a b as it's handling type, you can also handle inputs with noReply state, however you'd need to stash the writer channel in your State when initialising the server and use that to write back later on. Doing that, would provide excellent concurrency, since you can receive the HTTP request, fire off an asynchronous message/query to the underlying resource, then go back to listening, and when the resource-reply is sent back to your server, write back to the STM reply queue. I wouldn't want a single server managing all warp requests like that - to do so would be to fight warp's threading model, which I don't think is a good idea - however even when handling a single request in this way, you immediately give up your slice of the CPU for other threads/requests to proceed, which is likely to yield good results.
A key thing you'll want to watch out for with all of this though, is that if you're sending remote calls/messages then serialisation can incur quite a heavy cost. If you're communicating with other local processes, I strongly suggest using the Unsafe versions of call (providing you're sure you don't have any unevaluated thunks in the data you're passing), since these are orders of magnitude faster.

 It also helps with cases where e.g. the http IO handler times out and gets killed with an async exception I think?

@teh, well it might do... The underlying call mechanism isn't quite the same as the one used for ordinary messaging. It is implemented like so:
awaitResponse :: Addressable a
              => a
              -> [Match (Either ExitReason b)]
              -> Process (Either ExitReason b)
awaitResponse addr matches = do
  mPid <- resolve addr
  case mPid of
    Nothing -> return $ Left $ ExitOther "UnresolvedAddress"
    Just p  -> do
      mRef <- P.monitor p
      receiveWait ((matchRef mRef):matches)
  where
    matchRef :: MonitorRef -> Match (Either ExitReason b)
    matchRef r = matchIf (\(ProcessMonitorNotification r' _ _) -> r == r')
                         (\(ProcessMonitorNotification _ _ d) -> do
                             return (Left (ExitOther (show d))))

Now receiveWait does nothing about handling asynchronous exceptions, however if the server is bound to the creating/parent thread then I think what you actually want is to ensure it is killed if that thread exits. This is rather nuanced, since managed processes are not designed to be long or short lived, but they aren't a natural fit for a single shot query+response either.
In many ways, my suspicion for what you're doing is that you might be better off just using distributed-process-async. If the server process needs to maintain some state - e.g., a database connection, OS resources, etc - then it makes sense to model it as a managed process. If you just want to proxy other cloud haskell processes that are doing more complex things and are addressable by name etc, then a stateless managed process will do the trick, but there is a risk of accidental complexity when dealing with cleanup operations.
The usual way to clean up once a managed process is shutting down, is to install a shutdown handler. This will run before the process exits, and can be used to ensure any acquired resources are released properly. Since you cannot link your warp thread to the managed process (which is running in CH land) easily, a sensible approach would probably be to start the managed process with a Timeout value matching that of the warp http timeout value +/- 10%. That way, if the warp thread that spawned the managed process dies before it can ask the managed process server to stop, the server will automatically time itself out and cleanup before it goes.
Something I keep meaning to ask you...

when do you spawn a managed process server - is it per http request?
do you expect the managed process to survive only for the lifetime of the http request, or do you wish to reuse it for subsequent requests?

Oh and I should point out that cleanup is one of the reasons why you'd normally arrange your process hierarchy in a supervision tree, such that when a branch shuts down, all the server processes perform their cleanup properly before restarting (or shutting down the supervisor, depending on the strategy chosen).

Yes to both questions 1 and 2 (in my current code which is essentially still the one in https://github.com/haskell-distributed/distributed-process/issues/306#issuecomment-277825991 ).
Cleanup is an interesting question in general, though AFAICT I don't have anything like open file handlers that needs cleaning up directly.
I do need to make sure that an async exception kills the Process I am spawning per request as well. If I have a pool of handlers (+ a supervisor) then this issue doesn't arise. These are all questions for me though. I'll write it up when I find out what works best.

Closing this issue, as the handleExternal stuff has now been merged and will be released shortly.


ARAM

I'm having a problem with the ARAM thing, its sayng there was a error and dont do nothing.

contact me on discord


Saving conversations in sql Database

How can I save messages in sql database?
Can you explain it to me?
Thanks

I have same question

LCSK uses the in-memory SignalR mechanism, SignalR handle message saving in all sorts of database, You might want to add this package https://www.nuget.org/packages/Microsoft.AspNet.SignalR.SqlServer/2.2.0 with proper configuration and SignalR will use a database instead.
Here's a tutorial that could help: http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server
Good luck.


Fix Gleam's rebar config

Oops! The previous instructions on the Gleam website were incorrect. My
bad! This patch corrects the problem.

Thanks!


Is the log file guaranteed to be read until the end before being reopened?

I was wondering if the log file that is begin followed (Follow: true, ReOpen: true) will be read until the end when it is moved and recreated. I can imagine a race condition where a line is written to the log file just before the file is rotated, and the new log file is openend before the old one has been read until the end.

i just confirmed this is actually a bug. It doesn't finish reading the renamed file before reopening the new file.  I say this is a bug because it claims to follow BSD tail, which doesn't suffer from this issue.

Indeed some log entries may be lost when the file is rotated, but the BSD tail has the same issue.
It's a tradeoff.  If you just use the logs to do some statistics analysis, then I think it's acceptable.


chore: move from typings to @types

AS WIP AS IT CAN GET
The difference in here is that we need to list all the new @types directly into tsconfig.json. I want to believe that the need is going to be removed for Typescript 2.0.
There is much more to do yet, stay tuned.

This was just a proof of concepts, we will wait for TS 2, so bye bye.


tests: showcase verdict & no action field in test - v3

With the addition of the 'verdict' field and making the 'action' field optional, have at least one test that illustrates this.
Bug #5464
Previous PR: https://github.com/OISF/suricata-verify/pull/1124
Changes from previous PR:

add the csv generated by one of the dataset tests to gitignore
add test for verdict in ids mode
add test for multi-eve log files, splitting them somewhat semantically

Suricata PR: https://github.com/OISF/suricata/pull/8596

Closing this for now, as it's still WIP and we already know we'll change direction on how to approach the verdict field.


Buffer on live streaming

Hey guys.
First of all, congrats for this framework.
Well, when are you guys planning to include the buffer feature on live streaming.

it is supported, check the example project

How can i apply this, is there a documentation for this option? I did not find on the example. sorry

in the example project you'll see that the first item in the playlist is a m3u url. pass your url when creating the JukeboxItem


Command support

This might be more of a question rather than an issue. I can't seem to find a command associated with excel-plus in the command palette. I am currently relying on the side panel "Create Excel File" to create excel sheets. I am wondering if there is a command that I am not aware of or is that WIP. It would be helpful to have it for ease-of-use.
Obsidian v1.5.12
excel-plus 1.0.0

excel-plus 1.0.2 support


Wrong behavior in splice syscall

Hi all,
Actually I am facing an issue with splice syscall. When I run this testcase, what it expects in line 823 is that splice returns an EINTR. It expects splice gets blocked and receives interrupt generated in line 819. When I checked the code of Quark, it spins in this loop. Actually, it always get EWOULDBLOCK error which is correct but it does not block and get stuck in this loop. So the signal does not work for this thread.
In this testcase, Quark also does not work correctly. the task running this syscall gets blocked in here. I tried to figure out who get this lock but I could not find anything.

Update
Just for second issue, quark lock implementation seems to be wrong. What I am seeing in this implementation, Quark does not care about the task acquiring the lock. In such case, when we a task get a lock, it can not get it again which cause a deadlock in the second testcase. I think we need to have an extra layer on the lock we have now and check it.

Link is updated now.


Release TagSet

New production dependencies
If a PR introduces new dependencies in package.json, paste the following checklist into the PR as a comment and check the items off before approving.
Tip You should be able to copy and paste the section below directly into a GitHub comment, then check where criteria passed, strike out where not applicable.
Review of dependencies

[ ] Verify the dependency has previously been pedigree reviewed
[ ] Verify the dependency doesn't contain any vulnerabilities
[ ] Verify the dependency bundle size is acceptable
[ ] Verify the dependency is actively maintained
[ ] Verify license conditions are met e.g. forwarding of copyright if necessary.

Component reviews for readiness
Reviews will be carried out by one or more members of the core contribution team. They will include as a minimum the following checks, which establish the "definition of done" for a component.
Paste the following checklist into the epic or issue under which the component is being made ready, then check where criteria passed, and add notes to clarify how an item is complete or what remains to be done: for anything more than minor/simple items, open issues to track them.
Tip You should be able to copy and paste the section below directly into a GitHub comment, then check where criteria passed, strike out where not applicable, and add notes to each item where applicable.
Once one or more components have been reviewed for readiness, the following steps are needed:
the flags for the components in package-settings.js should be changed to true.
the component SCSS should be included in /src/components/_index-released-only.scss.
run the tests, recreating snapshots (using -u), and check in the updated public CSS snapshot. NB it is sufficient to run yarn jest styles -u to complete the snapshot updates.
Review for release
Readiness

[x] One or more scenarios for a design pattern have been identified as a useful unit of functionality to publish.
[x] A functioning component or components delivering those scenarios have been delivered and merged to master.
[x] Design maintainer has approved the implementation for those scenarios (via a comment on the relevant issue/epic).

Engineering review

[x] Breaking changes have only been introduced with prior approval, discussion and documented in release notes. Ideally deprecation notices in the prior major version must have been added in a timely fashion.
[x] The implementation takes into account, and does not impair, remaining and anticipated design scenarios.
[ ] Public component features (names, props, etc) are consistent with Carbon-defined conventions and are consistent internally. Where there isn't an existing convention to apply, ensure robust precedents are being established.
[ ] The UI produced is accessible, responsive, translatable, cross-browser, and responds to the currently set Carbon theme.
[x] Components are functional components using hooks.
[x] Public components which produce DOM structures support className.
[x] Public components support a ref (via React.forwardRef).
[ ] All significant DOM elements have meaningful classes.
[x] Additional attributes that are not identified as props (such as title, aria-*, etc) are passed through to an appropriate DOM node of the component as HTML attributes.
[x] No warnings, errors or log messages in the console.
[ ] Each public component JS is exported in /src/components/index.js, each public component SCSS is included in /src/components/_index.scss, and each public component has a flag in package-settings.js.

Standards

[x] No linter warnings or errors are produced.
[x] Carbon tokens (theme, layout, motion) are used unless the design specifies otherwise.
[x] Code is formatted according to prettier rules (no use of //prettier-ignore).
[ ] Code is clear, maintainable and follows standard React practices and the code guidelines.
[ ] Copyright header in every source file (js, css, scss etc.) with the appropriate years.

Testing

[x] There is a set of test cases for the components.
[ ] The tests exercise all inputs (props, slots, etc) and verify appropriate outputs.
[x] The tests validate the behaviors and interactions defined in the design where practical.
[ ] The tests achieve 100% coverage.
[x] No warnings, errors or log messages in the test output.

Documentation

[x] Source code is satisfactorily commented and provides DocGen comments for all public components and their props.
[x] There is a story for each design scenario. The stories expose all relevant props and actions, and additional usage documentation and code samples are available on the 'Docs' tab along with the props table.
[ ] There is a sandbox (or multiple sandboxes if appropriate) on CodeSandbox for the components.

STOP!!! These comments are a work in progress.

Release review feedback:

[ ]  Are you able to update the children.propTypes to specify that all children should be a Tag component from carbon. -- See example in EmptyState
[ ]  add isRequired to overFlowAlign prop

Why make overflowAlign required when it has a default of 'center'?

[ ]  We saw the availability to rightAlign the Tags in the tagset container. is there a reason there is no center

Neither right alignment or center were called for in the design, but right alignment used in the PageHeader design. Carbon only uses 'center' for tooltip, 'right' for radio label position, 'align' with values 'start', 'end' for accordion chevron position. None of these really work here, but we could change to a more flexible 'align' with values of 'left', 'right' with left the default.

[ ]  showAllModalHeading change to showAllModalTitle for consistency then add required

Changed to showAllModalTitle, but why make required when there is a default?

[ ]  showAllSearchLabel to be required for screen readers/accesibility

Why when it has a default?

[ ]  showAllTagsLabel to be required

Why when it has a default?

[ ]  remove all defaultProps -- devs should be encouraged to add the props themselves so that the alignment on the page is correct. You can add the defaultProps to your storybook instead

This makes it more cumbersome to use in it's default configuration.

[ ]  replace use of heading prop in TagSet, TagSetOverflow and TagSetModal to title

With reservations as this is a misuse of a standard HTML attribute.

[ ]  on line 72 of TagSetOverflow, is there a particular reason for the use of React.cloneElement?

It overrides the 'filter' attribute to false, as per the design request.

[ ]  The "+" sign on line 60 of TagSetOverflow is hardcoded -- will this be translatable across other languages? Do other languages use an icon other than "+" to signify "more"?

I don't know, the question asked here.https://ibm-casdesign.slack.com/archives/C036P1CTN/p1623765536312600

[ ]  in the Search modal, if you search "Label" with an uppercase 'L', none of the results will show

Good catch.

[ ]  Line 77 in TagSetOverflow -- we probably shouldn't use the Link component with no href -- since this triggers a modal, we should use a button instead that is styled like a link.

Added role="button" rather than overriding button styles.

[ ]  in TagSet overflow, change blockClass on line 17 to $pkg.prefix}--tag-set__overflow

Strictly speaking, it should be ${pkg.prefix}--tag-set-overflow

[ ]  Line 76 ih TagSetModal, we can get rid of show-all-tags-modal-body-2

Removed the -2, but otherwise made use of class in preference to Carbon class.

[ ]  Add TagSet component to src/compoonents/index.js file
[ ]  In the box-shadow property in your scss file, can you replace 2px with $spacing-01
[ ]  In line 81 of your scss file, you can remove the hashtag '#' since you're not interpolating the variable anymore
[ ]  In line 65, you have a max-height on the modal which should only be included in a breakpoint of medium or higher.

@include carbon--breakpoint(md) { max-height: 450px, height: 90% }

[ ]  In all files under TagSet, go ahead and update the copy write header to include 2020, 2021 (except TagSet.js and TagSetOverflow.js -- those are already updated!)
[ ]  Include copy write header in TagSet.test.js (it's currently missing)
[ ]  We need to get to 100% test coverage on TagSetOverflow.js and TagSet.js -- see screenshot below
[ ]  With the new required props, there may be a drop in your test coverage or updates to your testing needed.
[ ]  Include a markdown file with relevant information for documentation
[ ]  Create a CodeSandbox for this component

@sydrosa addressed all issues with the inclusion of #913 except the codesandbox. Will add a codesandbox after this PR is merged.

Feedback from updates:

Yes that's fine to leave as a default, since we discussed earlier that only translatable string props should not have defaults.
If this wasn't called for in the design, we can make this an enhancement if the need for this arises.
✅
✅
I agree, however, probably best so that we can have consistency across our components.
✅
Looks like there is approval via the a11y slack channel ✅
✅
✅
We noticed that this class was not used anywhere in your styles for this component, that's why we recommended to just remove it entirely.

It would make sense to change it to 'start', 'center' and 'end' now so as not to introduce a breaking change later. The default would be 'start' as per standard HTML flow.
Did it, but with reservations.
It was not but I was relying on Carbon classes. I removed the Carbon class usage and the number off the end of the class.

https://codesandbox.io/s/tagset-85crr


Request more variants such as ResNet-18

Hello,
Would it be possible for you to add more variants to mimic the ResNet architecture provided by pytorch? This enables us to perform principled comparisons on different levels of complexity. Excited to follow your work.

Thanks for your interests in our work. I'll add ResNet18 and ResNet34 recently.

@RSKothari IBN-Net variants based on ResNet18 and ResNet34 are added now.