Add the fetchorientation parameter to the /v1/operations/:operationId/log interface

Why are the changes needed?

to close https://github.com/apache/kyuubi/issues/4732
How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[X] Run test locally before make a pull request

The original OperationLog class had a read(maxRows: Int) method without the FetchOrientation parameter, supporting only the FETCH_NEXT mode for reading data. However, when retrieving logs from the AbstractSession, the result data has the FetchOrientation parameter.
override def fetchResults(
    operationHandle: OperationHandle,
    orientation: FetchOrientation,
    maxRows: Int,
    fetchLog: Boolean): TRowSet = {
  if (fetchLog) {
    sessionManager.operationManager.getOperationLogRowSet(operationHandle, orientation, maxRows)
  } else {
    sessionManager.operationManager.getOperationNextRowSet(operationHandle, orientation, maxRows)
  }
}

In the original OperationManager code, due to the lack of FetchOrientation support in the OperationLog's read method, the implementation ignored the FetchOrientation parameter.
def getOperationLogRowSet(
    opHandle: OperationHandle,
    order: FetchOrientation,
    maxRows: Int): TRowSet = {
  val operationLog = getOperation(opHandle).getOperationLog
  operationLog.map(_.read(maxRows)).getOrElse {
    throw KyuubiSQLException(s"$opHandle failed to generate operation log")
  }
}

As a result, the operation logs provided to the external interface do not support the FetchOrientation parameter, and it is not possible to review the log data for an operation.
The mentioned pull request adds the FetchOrientation parameter to the OperationLog.read method and introduces support for the FetchOrientation parameter in the /v1/operations/:operationId/log interface.

@huangzhir thank you for the work. It seems the performance is poor for FETCH_PRIOR, for each request, we will reopen the log file and seek to taget position. Is there a real world use case for it ? If so, we might need to rewrite the code using RandomAccessFile. FETCH_FIRST looks more useful to me.

@ulysses-you Thank you for your insightful comments. I concur with you on the significance of both FETCH_FIRST and FETCH_PRIOR. FETCH_FIRST is indeed crucial when it comes to re-reading logs.  Regarding FETCH_PRIOR, although the performance may not be ideal at the moment, its usage cases may be relatively few. Therefore, I propose we retain it for now. If there arises a need in the future, we can look into optimizing it, possibly with your suggestion of using a RandomAccess File. Your feedback is highly appreciated.

Codecov Report

Merging #4813 (162e008) into master (4c3c36e) will not change coverage.
The diff coverage is 0.00%.

@@          Coverage Diff           @@
##           master   #4813   +/-   ##
======================================
  Coverage    0.00%   0.00%
======================================
  Files         557     557
  Lines       30696   30725   +29
  Branches     3994    4000    +6
======================================
- Misses      30696   30725   +29

Impacted Files
Coverage Δ

...rk/sql/execution/arrow/KyuubiArrowConverters.scala
0.00% <ø> (ø)

...org/apache/kyuubi/operation/OperationManager.scala
0.00% <0.00%> (ø)

...org/apache/kyuubi/operation/log/OperationLog.scala
0.00% <0.00%> (ø)

...ache/kyuubi/operation/KyuubiOperationManager.scala
0.00% <0.00%> (ø)

...ache/kyuubi/server/api/v1/OperationsResource.scala
0.00% <0.00%> (ø)

... and 2 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@huangzhir thank you for the work. It seems the performance is poor for FETCH_PRIOR, for each request, we will reopen the log file and seek to taget position. Is there a real world use case for it ? If so, we might need to rewrite the code using RandomAccessFile. FETCH_FIRST looks more useful to me.

I looked at the Hive code (link: https://github.com/apache/hive/blob/a5d7f72dfe51fe8119d209bf61c64b8e94f2f42b/ql/src/java/org/apache/hadoop/hive/ql/session/OperationLog.java#LL156C31-L156C35) and noticed that FETCH_PRIOR is not implemented. Therefore, I have removed FETCH_PRIOR and referenced the Hive OperationLog code to rewrite the code.
@ulysses-you Can you please review it?"

thank you @huangzhir , merging to master


Focus escapes data grid with caret browsing

I accidentally turned on caret browsing in Chrome with F7, and noticed that arrow keys on the boundaries of the data grid will escape focus to a nearby in dom tree element. Think we should use a focus-trap such as https://github.com/focus-trap/focus-trap-react to prevent this, and maintain focus in the grid. Important part would also be implementing an escape hatch for accessibility: https://codemirror.net/examples/tab/

At this time we are not planning to focus trap. I'd be open to a PR to do it conditionally however.

focusTrap now available in 6.0.0


fix: Iceberg schema evolution fails for map or array types

Feature or Bugfix

Bugfix

Detail

Iceberg schema evolution fails for map or array types

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

AWS CodeBuild CI Report

CodeBuild project: GitHubCodeBuild8756EF16-4rfo0GHQ0u9a
Commit ID: e7693913a3463baef745db09054e242a43565b45
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: GitHubDistributedCodeBuild6-jWcl5DLmvupS
Commit ID: e7693913a3463baef745db09054e242a43565b45
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: GitHubDistributedCodeBuild6-jWcl5DLmvupS
Commit ID: 7a8183a072569a549e4f9681660a71b570d8db82
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: GitHubCodeBuild8756EF16-4rfo0GHQ0u9a
Commit ID: 83c3a129f954ce631e1a3a4d8f9747d41053225a
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: GitHubDistributedCodeBuild6-jWcl5DLmvupS
Commit ID: 83c3a129f954ce631e1a3a4d8f9747d41053225a
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


kill-left-alnum-word and kill-alnum-word-left

In the document, there are edit:kill-alnum-word-left and edit:kill-alnum-word-right. However, they are actually kill-left-alnum-word and kill-right-alnum-word.
https://github.com/elves/elvish/blob/7b7462f02c1139d63135ddc294359414aac7fa18/pkg/edit/buffer_builtins.go#L54-L55

Thanks for reporting!


Quectel GNSS: 600ms delay

The raw GNSS messages from the quectel GNSS messages appear to be consistently 600ms delayed. This delay is not happening on the openpilot side but likely inside the GNSS code of the quectel module. Messing with settings available in the quectel manual and model manual do not seem to affect this.

https://github.com/commaai/openpilot/pull/25920 is for this


Switching from Kaae to Sentinl

Just switched my configuration from Kaae to Sentinl. And it shows nothing

Previous config:
{
    "es": {
        "alarm_index": "watcher_alarms",
        "default_index": "watcher",
        "timefield": "time",
        "type": "watch"
    },
... ... ...

New config:
sentinl:
  es:
    timefield: 'time'
    default_index: watcher
    type: watch
    alarm_index: watcher_alarms
... ... ...

Docker image build log:
Step 1 : FROM mhart/alpine-node:5
 ---> 89775bcb2ef1
Step 2 : EXPOSE 5601
 ---> Running in 3f3203eb955f
 ---> 76bc0fc25fee
Removing intermediate container 3f3203eb955f
Step 3 : ENV KIBANA_VERSION 4.6.1
 ---> Running in 4b803b05aa94
 ---> 9d8971f417b0
Removing intermediate container 4b803b05aa94
Step 4 : RUN apk add --update curl ca-certificates sudo &&   ( curl -Lskj https://download.elastic.co/kibana/kibana/kibana-${KIBANA_VERSION}-linux-x86_64.tar.gz |   gunzip -c - | tar xf - ) &&   mv /kibana-${KIBANA_VERSION}-linux-x86_64 /kibana-linux-x86_64 &&   rm -rf /kibana-linux-x86_64/node &&   apk del curl
 ---> Running in 9d7a3e3f1e62
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ca-certificates (20160104-r4)
(2/5) Installing libssh2 (1.7.0-r0)
(3/5) Installing libcurl (7.52.1-r0)
(4/5) Installing curl (7.52.1-r0)
(5/5) Installing sudo (1.8.16-r0)
Executing busybox-1.24.2-r9.trigger
Executing ca-certificates-20160104-r4.trigger
OK: 8 MiB in 18 packages
(1/3) Purging curl (7.52.1-r0)
(2/3) Purging libcurl (7.52.1-r0)
(3/3) Purging libssh2 (1.7.0-r0)
Executing busybox-1.24.2-r9.trigger
OK: 8 MiB in 15 packages
 ---> f08de0b57462
Removing intermediate container 9d7a3e3f1e62
Step 5 : RUN npm install --save later mustache
 ---> Running in fabf6bb95e8c
npm WARN saveError ENOENT: no such file or directory, open '/package.json'
/
+--<EMAIL_ADDRESS>`--<EMAIL_ADDRESS>
npm WARN enoent ENOENT: no such file or directory, open '/package.json'
npm WARN !invalid#1 No description
npm WARN !invalid#1 No repository field.
npm WARN !invalid#1 No README data
npm WARN !invalid#1 No license field.
 ---> be819119c470
Removing intermediate container fabf6bb95e8c
Step 6 : RUN /kibana-linux-x86_64/bin/kibana plugin --install sentinl -u https://github.com/sirensolutions/sentinl/archive/tag-4.6.3.tar.gz
 ---> Running in 79391f8c1b5c
Installing sentinl
Attempting to transfer from https://github.com/sirensolutions/sentinl/archive/tag-4.6.3.tar.gz
Transferring unknown number of bytes
Transfer complete
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
 ---> 35642e3fb840
Removing intermediate container 79391f8c1b5c
Step 7 : RUN /kibana-linux-x86_64/bin/kibana plugin --install heatmap -u https://github.com/stormpython/heatmap/archive/1.0.0.zip
 ---> Running in a1032e8a5a64
Installing heatmap
Attempting to transfer from https://github.com/stormpython/heatmap/archive/1.0.0.zip
Transferring unknown number of bytes
Transfer complete
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
 ---> 3384cde9d482
Removing intermediate container a1032e8a5a64
Step 8 : RUN /kibana-linux-x86_64/bin/kibana plugin --install vectormap -u https://github.com/stormpython/vectormap/archive/master.zip
 ---> Running in 34ea64ce6c30
Installing vectormap
Attempting to transfer from https://github.com/stormpython/vectormap/archive/master.zip
Transferring unknown number of bytes
Transfer complete
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
[BABEL] Note: The code generator has deoptimised the styling of "/kibana-linux-x86_64/installedPlugins/vectormap/public/lib/jvectormap/maps/map.asia_mill.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "/kibana-linux-x86_64/installedPlugins/vectormap/public/lib/jvectormap/maps/map.europe_mill.js" as it exceeds the max of "100KB".
[BABEL] Note: The code generator has deoptimised the styling of "/kibana-linux-x86_64/installedPlugins/vectormap/public/lib/jvectormap/maps/map.world_mill.js" as it exceeds the max of "100KB".
Plugin installation complete
 ---> 05c6051c305b
Removing intermediate container 34ea64ce6c30
Step 9 : RUN rm -rf /kibana-linux-x86_64/config && ln -s /etc/kibana /kibana-linux-x86_64/config
 ---> Running in bf91ccd2de77
 ---> 21be1e0e3b4d
Removing intermediate container bf91ccd2de77
Step 10 : COPY run.sh /
 ---> 7f732f49f103
Removing intermediate container 5b4e94db85df
Step 11 : CMD /run.sh
 ---> Running in 2b5f999e370d
 ---> 46c627536a24
Removing intermediate container 2b5f999e370d
Successfully built 46c627536a24

Mapping changed to support reporting and other features - are there any errors on the kibana logs in verbose mode? Ideally, let Sentinl recreate the indices and then either re-create or plain import the existing watchers.

@lmangani there is nothing about incompatible kaae/sentinl indexes. Will try to recreate them from the scratch.

any errors in the browser console?

GET https://mysite.com/api/sentinl/example 404 ()

I use sentinl 4.6.3 tag.

what's that? I mean if there are any errors in your console browser while loading the Kibana App :)

Yep, Chrome complains that it can not load https://mysite.com/api/sentinl/example

Stopped kibana, removed old indexes, started. New indexes were not created.

Kibana logs:
{"type":"log","@timestamp":"2017-01-13T15:51:09Z","tags":["status","plugin:heatmap@0.1.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:09Z","tags":["status","plugin:kibana@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:10Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":7,"state":"yellow","message":"Status changed from uninitialized to yellow - Waiting for Elasticsearch","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:10Z","tags":["status","plugin:sentinl@4.6.3","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:10Z","tags":["status","plugin:vectormap@0.1.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:10Z","tags":["status","plugin:kbn_vislib_vis_types@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:markdown_vis@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:metric_vis@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:spyModes@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from yellow to green - Kibana index ready","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:elasticsearch@1.0.0","error"],"pid":7,"state":"red","message":"Status changed from green to red - Unknown config key: elasticsearch.plugins","prevState":"green","prevMsg":"Kibana index ready"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:statusPage@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["status","plugin:table_vis@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-01-13T15:51:11Z","tags":["listening","info"],"pid":7,"message":"Server running at http://<IP_ADDRESS>:5601"}
{"type":"log","@timestamp":"2017-01-13T15:51:14Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":7,"state":"green","message":"Status changed from red to green - Kibana index ready","prevState":"red","prevMsg":"Unknown config key: elasticsearch.plugins"}

@lmangani nope. I even don't know what causes this issue.

If you remove sentinl, does the error disappear? What happens if you remove the custom yml?

Here is the log of kaae starup:
"type":"log","@timestamp":"2017-02-07T11:58:47Z","tags":["status","plugin:heatmap@0.1.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:47Z","tags":["status","plugin:kibana@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:48Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":6,"state":"yellow","message":"Status changed from uninitialized to yellow - Waiting for Elasticsearch","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:48Z","tags":["status","info","KaaE"],"pid":6,"message":"KaaE Initializing"}
{"type":"log","@timestamp":"2017-02-07T11:58:50Z","tags":["status","info","KaaE"],"pid":6,"message":"Core Index check..."}
{"type":"log","@timestamp":"2017-02-07T11:58:50Z","tags":["status","info","KaaE"],"pid":6,"message":"Alarm Index check..."}
{"type":"log","@timestamp":"2017-02-07T11:58:50Z","tags":["status","plugin:kaae@0.0.9","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:vectormap@0.1.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T00:00:00Z","tags":["status","info","KaaE"],"pid":6,"message":"Core Index response"}
{"type":"log","@timestamp":"2017-02-07T00:00:00Z","tags":["status","info","KaaE"],"pid":6,"message":"Alarm Index response"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:kbn_vislib_vis_types@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:markdown_vis@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:metric_vis@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:elasticsearch@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from yellow to green - Kibana index ready","prevState":"yellow","prevMsg":"Waiting for Elasticsearch"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:spyModes@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:statusPage@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["status","plugin:table_vis@1.0.0","info"],"pid":6,"state":"green","message":"Status changed from uninitialized to green - Ready","prevState":"uninitialized","prevMsg":"uninitialized"}
{"type":"log","@timestamp":"2017-02-07T11:58:51Z","tags":["listening","info"],"pid":6,"message":"Server running at http://<IP_ADDRESS>:5601"}

There is no Unknown config log.

You're running the old plugin. The new one produces logs as SENTINL

@lmangani what do you mean? You asked me to start kibana without SENTINL. I did this. Of course it won't have "SENTINL" logs :)

@kayrus that's not what i meant. If you remove SENTINL and you still see KAAE logs, you are running the old plugin as well. You need to remove it, drop the .watcher* tables and reinstall SENTINL, I guess.

I don't have a container without SENTINL or KAAE. Thus I just started KAAE. You wanted to check whether the Unknown config key: elasticsearch.plugins log will appear. It won't without SENTINL plugin.
As for the .watcher* tables. They were removed as well.

I'll try to re-read this later on, I can't recall issues months apart but this being said, it might be a good day to try out Kibi (where the plugin is most tested) and see if you can go back to Kibana afterwards ;)

@lmangani I've just noticed new tag-4.6.3-1 tag. I've installed this version and it works and shows user interface.
As for Kibi, it look fancy, but thanks. I'll postpone it. It is hard to educate people to work with the new project.

@kayrus glad it works. As of Kibi, that's a shame as there is zero learning curve coming from Kibana, and you can offer your users Dashboards, joins and other key visualizers and extensions in full compatibility mode. Also you can run both in parallel without any disturabance as they use different indices for settings.


Add option to remove {jade:…} from output JSON

…for leaner JSON files.

not supporting this for now until someone needs it.


Release pages to OS on contiguous allocations if evicted from cache

This applies to the MMAP allocator.
The Async data cache uses non-contiguous memory allocations to cached data. If the allocator is running out of memory when attempting to allocate more memory, it starts evicting pages from the cache. These pages are deallocated but not released to the operating system in anticipation that they will be reused by the allocation request. However, if the allocation request is a large contiguous memory request and it exceeds the allocator capacity, the cache starts evicting pages using the freeNonContiguous function. This results in the size classes setting the deallocated bit but keeps the pages mapped  but indicated as free (see  MmapAllocator::SizeClass::free()).
As a result the memory consumption by the allocator is reduced but from OS perspective no memory was freed to be able to satisfy the contiguous mmap call which continues to fail with not enough memory.
As a result of the continued failure the cache keeps deallocating memory without resolving the underlying issue and eventually fails the query.
Thus, this PR attempts to free and release memory after the cache evicted the requested amount of memory.
The MallocAllocator is not affected by this behavior.

@xiaoxmeng please take a look at my comment response. I've added a test that simulates the situation that we have been seeing.

@xiaoxmeng Would you please take a look again at this PR? If this newer default behavior is not preferred perhaps we can add a config property to enable it?

@czentgr can we just reply on ensureEnoughMappedPages() to handle that? I don't think we need to do unmap when evict cache.

After discussion we decided that the memory pushback logic (the Linux Memory Checker) addresses this issue. This was originally found while no memory pushback was used.
It is unclear why the contiguous mmap allocations failed with ENOMEM when presumably there is enough address space available. The assumption was that it runs out of real space which is the case because there is external memory overhead (proxygen, hash probe etc).


react-native run-android  throw new TypeError('invalid data');^  TypeError: invalid data     at WriteStream.Socket.write (net.js:617:11)

I use ubuntu 14.04. I have finished install follow link : https://facebook.github.io/react-native/docs/getting-started.html. And create : react-native init AwesomeProject success but when i run command : react-native run-android, i have problem : net.js:617
throw new TypeError('invalid data');
^
TypeError: invalid data
at WriteStream.Socket.write (net.js:617:11)
at Object.execFileSync (child_process.js:482:20)
at Object.run (/AwesomeProject/node_modules/react-native/local-cli/cli.js:77:16)
at Object. (/usr/local/lib/node_modules/react-native-cli/index.js:73:7)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:134:18)
My envirement :

uname -a
Linux cpu-duclh 3.16.0-60-generic #80~14.04.1-Ubuntu SMP Wed Jan 20 13:37:48 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
-nodejs -v
v4.3.1
npm -v
2.14.12
Please help me!!!

This worked on my machine:
chmod +x <project-dir>/node_modules/react-native/local-cli/setup_env.sh
Problem seems to be at
https://github.com/facebook/react-native/blob/master/local-cli/cli.js#L77
when the cli tries to run that setup script.

i get same error

i get same error
@mvnnn @sebluy @ducpm0301
Would you please share your solution?

Because some file haven't permission so it errors. I use Ubuntu with two
hard disk. I put code in mount disk with full permission(777) but also get
the errors. When i put code in home folder, it ok
On Mon, Aug 22, 2016 at 4:38 PM, BoluoPi<EMAIL_ADDRESS>wrote:

i get same error
@mvnnn https://github.com/mvnnn @sebluy https://github.com/sebluy
@ducpm0301 https://github.com/ducpm0301
Would you please share your solution?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/facebook/react-native/issues/6074#issuecomment-241361608,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AD3nhsRAz3ifYHfZ2NqVsbzK1-ynZp0gks5qiW4ngaJpZM4HfPHZ
.

Same error here. Same solution of @ducpm0301. Thanks!

Same error here. Same solution of @ducpm0301. Thanks!

Almost Same error here.
Same solution of @sebluy. Thanks!
TypeError: Invalid data, chunk must be a string or buffer, not object
at WriteStream.Socket.write (net.js:647:11)
at WriteStream.stream.write (/Users/tang/Code/sdpQrcodePay/node_modules/ansi/lib/newlines.js:36:21)
at Object.execFileSync (child_process.js:493:20)
at Object.run (/Users/tang/Code/sdpQrcodePay/node_modules/react-native/local-cli/cliEntry.js:154:16)
at Object. (/Users/tang/.nvm/versions/node/v6.2.0/lib/node_modules/react-native-cli/index.js:88:7)
at Module._compile (module.js:541:32)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)

It sounds like this is solved as a non-RN-bug, so I am going to close this issue. Thanks folks for chiming in with solutions!


Installed in vmware/vcenter a new OKD 4.10.0-0.okd-2022-04-23-131357 cluster, but the install didn't finish within the 30 min timeframe

Installed in vmware/vcenter  (openshift-install create cluster --dir /opt/install --log-level=info ) a new OKD 4.10.0-0.okd-2022-04-23-131357 cluster, but the install didn't finish within the 30 min time frame.
The cluster did eventually finish deploying but never deleted the bootstrap node, now when I bring the cluster up (I don't start the bootstrap node) it is giving me a unhealthy warning about etcd bootstrap see below. What do I need to do to get rid of the bootstrap dependency in a functioning cluster?
[root@config okd-scripts]# oc get -o yaml clusteroperator etcd
apiVersion: config.openshift.io/v1
kind: ClusterOperator
metadata:
annotations:
exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
creationTimestamp: "2022-05-03T17:24:28Z"
generation: 1
name: etcd
ownerReferences:

apiVersion: config.openshift.io/v1
kind: ClusterVersion
name: version
uid: 56981808-c81e-46e3-a6cc-5477061429c1
resourceVersion: "72694"
uid: eed2cb9e-2775-4421-b827-ea5fa5a808ee
spec: {}
status:
conditions:
lastTransitionTime: "2022-05-03T17:39:39Z"
reason: ControllerStarted
status: Unknown
type: RecentBackup
lastTransitionTime: "2022-05-03T20:40:12Z"
message: |-
ClusterMemberControllerDegraded: unhealthy members found during reconciling members
DefragControllerDegraded: cluster is unhealthy: 3 of 4 members are available, etcd-bootstrap is unhealthy
EtcdMembersDegraded: 3 of 4 members are available, etcd-bootstrap is unhealthy
reason: ClusterMemberController_Error::DefragController_Error::EtcdMembers_UnhealthyMembers
status: "True"
type: Degraded
lastTransitionTime: "2022-05-03T18:01:31Z"
message: |-
NodeInstallerProgressing: 3 nodes are at revision 7
EtcdMembersProgressing: No unstarted etcd members found
reason: AsExpected
status: "False"
type: Progressing
lastTransitionTime: "2022-05-03T17:42:10Z"
message: |-
StaticPodsAvailable: 3 nodes are active; 3 nodes are at revision 7
EtcdMembersAvailable: 3 of 4 members are available, etcd-bootstrap is unhealthy
reason: AsExpected
status: "True"
type: Available
lastTransitionTime: "2022-05-03T17:39:39Z"
message: All is well
reason: AsExpected
status: "True"
type: Upgradeable
extension: null
relatedObjects:
group: operator.openshift.io
name: cluster
resource: etcds
group: ""
name: openshift-config
resource: namespaces
group: ""
name: openshift-config-managed
resource: namespaces
group: ""
name: openshift-etcd-operator
resource: namespaces
group: ""
name: openshift-etcd
resource: namespaces
versions:
name: raw-internal
version: 4.10.0-0.okd-2022-04-23-131357
name: etcd
version: 4.10.0-0.okd-2022-04-23-131357
name: operator
version: 4.10.0-0.okd-2022-04-23-131357

Log into the bootstrap node and look at the journal. It may give an indication why it didn’t omplete
Sent from my iPhone

On May 3, 2022, at 5:02 PM, johnlongo @.***> wrote:

Installed in vmware/vcenter (openshift-install create cluster --dir /opt/install --log-level=info ) a new OKD 4.10.0-0.okd-2022-04-23-131357 cluster, but the install didn't finish within the 30 min time frame.
The cluster did eventually finish deploying but never deleted the bootstrap node, now when I bring the cluster up it is giving me a unhealthy warning about etcd bootstrap see below. What do I need to do to get rid of the bootstrap dependency?
@.*** okd-scripts]# oc get -o yaml clusteroperator etcd
apiVersion: config.openshift.io/v1
kind: ClusterOperator
metadata:
annotations:
exclude.release.openshift.io/internal-openshift-hosted: "true"
include.release.openshift.io/self-managed-high-availability: "true"
include.release.openshift.io/single-node-developer: "true"
creationTimestamp: "2022-05-03T17:24:28Z"
generation: 1
name: etcd
ownerReferences:
apiVersion: config.openshift.io/v1
kind: ClusterVersion
name: version
uid: 56981808-c81e-46e3-a6cc-5477061429c1
resourceVersion: "72694"
uid: eed2cb9e-2775-4421-b827-ea5fa5a808ee
spec: {}
status:
conditions:
lastTransitionTime: "2022-05-03T17:39:39Z"
reason: ControllerStarted
status: Unknown
type: RecentBackup
lastTransitionTime: "2022-05-03T20:40:12Z"
message: |-
ClusterMemberControllerDegraded: unhealthy members found during reconciling members
DefragControllerDegraded: cluster is unhealthy: 3 of 4 members are available, etcd-bootstrap is unhealthy
EtcdMembersDegraded: 3 of 4 members are available, etcd-bootstrap is unhealthy
reason: ClusterMemberController_Error::DefragController_Error::EtcdMembers_UnhealthyMembers
status: "True"
type: Degraded
lastTransitionTime: "2022-05-03T18:01:31Z"
message: |-
NodeInstallerProgressing: 3 nodes are at revision 7
EtcdMembersProgressing: No unstarted etcd members found
reason: AsExpected
status: "False"
type: Progressing
lastTransitionTime: "2022-05-03T17:42:10Z"
message: |-
StaticPodsAvailable: 3 nodes are active; 3 nodes are at revision 7
EtcdMembersAvailable: 3 of 4 members are available, etcd-bootstrap is unhealthy
reason: AsExpected
status: "True"
type: Available
lastTransitionTime: "2022-05-03T17:39:39Z"
message: All is well
reason: AsExpected
status: "True"
type: Upgradeable
extension: null
relatedObjects:
group: operator.openshift.io
name: cluster
resource: etcds
group: ""
name: openshift-config
resource: namespaces
group: ""
name: openshift-config-managed
resource: namespaces
group: ""
name: openshift-etcd-operator
resource: namespaces
group: ""
name: openshift-etcd
resource: namespaces
versions:
name: raw-internal
version: 4.10.0-0.okd-2022-04-23-131357
name: etcd
version: 4.10.0-0.okd-2022-04-23-131357
name: operator
version: 4.10.0-0.okd-2022-04-23-131357
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.

found the issue looks like I'm missing a dns entry see below
The instructions on the web page did not say I needed a dns entry for api-int see below

You've hit a known issue in the installer.  It should be fixed in the next release:
https://github.com/openshift/okd/issues/1182

found the issue looks like I'm missing a dns entry see below
The instructions on the web page did not say I needed a dns entry for api-int see below

bootstrap node should be resolving api-int. so you shouldn't need an external DNS entry

In the meantime adding the dns entry worked for me

I can confirm I have this issue on my vSphere IPI install asiel with 4.11.0-0.okd-2022-08-20-022919
Manually adding the api-int DNS record to my DNSmasq config works around this issue

Closed per https://github.com/openshift/installer/pull/5788


Feature Request: mujhe maro instead of try catch's catch block

try {
} muje maro (error){
}

Can we use
koshish kar bhai {

} pakdio bhai ( ) {

}

For finally we can use akhir me bhai. What do you say?

Can we use
koshish kar bhai {

} pakdio bhai ( ) {

}

Correction:
padkio → pakdo


plot_monthly_returns_heatmap should scale according to length of input returns

long backtests result in a heatmap that is not readable

related to: https://github.com/quantopian/pyfolio/issues/305

Does an implementation of matplotlib.pyplot.autoscale() not work when generating the output?


On fish shell docker-machine config does not work

When running docker-machine config <name>, the output usually looks like:
--tlsverify --tlscacert="/Users/jake/.docker/machine/certs/ca.pem" --tlscert="/Users/jake/.docker/machine/certs/cert.pem" --tlskey="/Users/jake/.docker/machine/certs/key.pem" -H=tcp://<IP_ADDRESS>:2376

The primary use case for this feature is to use it in a command substitution, like this:
docker $(docker-machine config <name>) run ...

The trouble with space-separating is that not all shells perform word splitting on spaces by default. While sh, bash, and zsh split on all whitespace (\s, \t, or \n) by default, fish splits only on newlines. This is a design decision to help reduce script bugs caused by filenames containing spaces.
Since most common shells will split arguments on newlines (to my knowledge ksh and even csh/tcsh do this also), I think it's more portable to have docker-machine config output each argument separated by a newline instead of a space.
As a bonus, this makes grepping the output easier.

Did I understand correctly if I say that docker $(docker-machine config <name>) run ... does not work in fish but potentially everywhere else ?

Correct. The command syntax in fish actually drops the $, but the idea's the same.
$ docker (docker-machine config default) run centos:6 ls
flag provided but not defined: --tlsverify --tlscacert

docker receives a single argument --tlsverify --tlscacert=... when it should get four args, --tlsverify, --tlscacert="/Users/...", etc. This is because fish doesn't tokenize the output of subcommands on spaces, only on newlines.

My docker-machine on Mac OS X  support fish.
The output of docker-machine env default:
 ><((("> Eason@iDocker: ~ => docker-machine env default                                          ~
set -x DOCKER_TLS_VERIFY "1";
set -x DOCKER_HOST "tcp://<IP_ADDRESS>:2376";
set -x DOCKER_CERT_PATH "/Users/Eason/.docker/machine/machines/default";
set -x DOCKER_MACHINE_NAME "default";
# Run this command to configure your shell:
# eval (docker-machine env default)

docker-machine version 0.5.0 (04cfa58)   Mac OS X
Hope this will help.

@jake-low was talking about docker-machine config command. I believe docker-machine env and docker-machine env -u works correctly for the fish shell.

@jeanlaurent: thanks for the fix!


system/arch btw

feat(*):Adding Arch(btw) support to bin/dotfiles
feat(*): Bash role supports os-specific config.
fix(bash): Conditional loading of kwctl completions.
feat(neofetch): Adding role for all OS.
feat(neofetch): Add custom config.
fix(neofetch): Adding to default roles.
docs(arch): Adding Arch to os mentioned.
docs(arch): Add Arch system upgrade.
fix(bash): Only launch neofetch when not it TMUX
feat(bash): Sprinkle YOLO on 'tapm' function.
fix(neovim): Notifications are jank without this.
feat(git): Adding Arch Support.
feat(system): Improving os-specific task calls.
feat(npm): Removing os-specific install. arch btw.
feat(bulk): Holy lots of additions.
feat(zoxide): Adding Archlinux support.
feat(wireguard): Adding Archlinux support.
feat(tmux): Adding Archlinux support.
feat(tmate): Adding Archlinux support.
feat(tldr): Removing os-specific config
feat(terraform): Adding Archlinux support.
feat(sshfs): Adding Archlinux support.
doc(sshfs): Fixing Uppercase.
feat(ssh): Removing os-specific config
feat(spotify): Adding Archlinux support.
feat(neovim): Keeps from having 'forever' popups.
feat(zellij): Adding OS Support.
feat(neovim): Fixing notifications for noice.nvim.
fix(neovim): Sticking with no messages for now.
fix(dotfiles): Pacman install pip package.
fix(dotfiles): Changing cmd detection.
fix(system): Become is required.
fix(neovim): Correcting package name.
feat(k9s): Adding Arch support.
feat(npm): Adding npm package installs.
fix(npm): Plz make truthy.
fix(arch): Not updating during script.
fix(arch): Adding openssh install.
fix(arch): Adding repo update flag.
fix(arch): Adding repo update step.
fix(arch): Setting locale.
fix(tldr): Correcting handler names.
fix(tldr): Correcting handler names.
feat(ansible-galaxy): Adding OS support for galaxy modules.
fix(neovim): Installing from AUR.
fix(neovim): NOT running makepkg as root.
feat(neovim): Adding treesitter objects and mappings.
feat(neovim): config tweaks.
feat(bash): No confirm on Arch update.
feat(lots): adding lots, mostly obsidian/telescope config
feat(neovim): Formatting changes.
feat(obsidian): Moving file ID to end of file..
Formatting cleanup.
feat(neovim): Tweaking Obsidian
feat(neovim): Heavy keymap reorg for telescope
feat(neovim): lots of stuff, sorry.
feat(bash): adding v neovim alias.
feat(neovim):Adding highlighting to current cursor object.
feat(neovim):more tweaks.
feat(neovim): Adding todo-comment plugin.

This PR is a little rushed, but i ended up sticking a TON of non-arch related changes here.

bash config
neovim (btw) config
etc...

So I need to get this messy branch merged. Sorry for anyone actually paying attention to this.


Refactor LS Workspace Manger

Purpose
$subject
Fixes #39097
Approach
With the introduction of the generated module there is a risk of having duplicate files (same file path internally) in a project as depicted in the following image.

When a user creates a duplicate document, the user should be notified about it.
The ProjectAPI is able to identify the duplicate document when a project is created (loaded) using the ProjectLoader.loadProject() method.
If there are duplicate files the ProjectAPI throws an ProjectException.
The ProjectAPI throws an ProjectException
This PR refactors the workspace manager to create a new project if the project is erroneous or a new file is created so that the ProjectAPI is able to identify and notify the user about duplicate files.
Samples

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[x] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Can you check the renaming scenario? i.e. rename a file in the generated folder into an existing file in the root folder.


3461: chunky radios

We want to bring back the existing faked radio buttons to maintain our success rate. When Chrome/OSX and Firefox/Win support resizing native buttons we can evaluate removing this code.
There’s an outstanding issue with Firefox not having the yellow outlines on focus, but I believe this is a problem in govuk_elements rather than this code and am investigating.

The selection buttons JS relies on .bind() to pass through context references. This isn’t supported natively in IE8, so govuk_frontend_toolkit provides a polyfill. We weren’t including it, which is fine for modern browsers but breaks the implementation in IE8.


Defer formatting to adjust format based on the ouput context

Discussed in https://github.com/jagerber48/sciform/discussions/83

Originally posted by Batalex November 20, 2023
The current sciform implementation eagerly formats values as soon as Formatter.__call__ is called.
This discussion is about making sciform implementation lazy so the actual format would happen when the value is printed.
Here is a quick look at what it could look like
# sciform.formatter.py

class Formatter:
    # ...
    # __init__

    def __call__(self, value: Number, uncertainty: Number = None, /):
-        rendered_options = self.user_options.render()
-        if uncertainty is None:
-            return format_num(Decimal(str(value)), rendered_options)
-        else:
-            return format_val_unc(Decimal(str(value)),
-                                  Decimal(str(uncertainty)),
-                                  rendered_options)
+    return FormattedValue(self, value, uncertainty)

+class FormattedValue(str):
+
+    def __init__(self, fmt: Formatter, value: Number, uncertainty: Optional[Number] = None, /) -> None:
+        self.fmt = fmt
+        self.value = value
+        self.uncertainty = uncertainty
+
+    def __str__(self) -> str:
        rendered_options = self.fmt.user_options.render()
        if self.uncertainty is None:
            return format_num(Decimal(str(self.value)), rendered_options)
        else:
            return format_val_unc(Decimal(str(self.value)),
                                  Decimal(str(self.uncertainty)),
                                  rendered_options)

The example above would be similar to the current implementation, but you could then add _repr_html_ or _repr_latex_ methods so that your displayed value uses \textsuperscript in a LaTeX document or  in a notebook.

This change may likely remove the latex Formatter option in favor of handling latex conversion downstream in the FormattedValue class.

One issue with this pattern is that right now the output of the Formatter is a string, and people might use it as a string. One example I can think of offhand would be appending units
from sciform import Formatter

sform = Formatter(exp_mode="engineering", exp_format="prefix")
num_str = sform(12345)
units = "Hz"
unit_str = f'{num_str}{units}'
print(unit_str)
# 12.346 kHz

Would this still work as expected? Does passing an object into an f string formatter always cast it to a string? What about
from sciform import Formatter

sform = Formatter(exp_mode="engineering", exp_format="prefix")
num_str = sform(12345)
units = "Hz"
unit_str = num_str + units
print(unit_str)
# 12.346 kHz

Yes, using f-strings would cast the result as a string. You might be onto something with the + operator, though. Formatter could define __add__ and __radd__ so that it can append units.

@Batalex ok, I've thought about this a little bit. The main thing that I like about it is that it provides hooks for __repr_html__ that can be used for jupyter or __repr_latex__ that could be used to send strings to Latex.
However, I don't think those things require deferred formatting. Consider
class Formatter:
    ...

    def __call__(
        self: Formatter,
        value: Number,
        uncertainty: Number | None = None,
        /,
    ) -> str:
        ...
        rendered_options = self._user_options.render()
        if uncertainty is None:
            output = format_num(Decimal(str(value)), rendered_options)
        else:
            output = format_val_unc(
                Decimal(str(value)),
                Decimal(str(uncertainty)),
                rendered_options,
            )
        return FormattedValue(output)

class FormattedValue(str):
    def __repr_html__(self):
        return f'{self}'

    def __repr_latex__(self):
        return fr'\text{{{self}}}'

Of course the __repr_html__ and __repr_latex__ functions would be built out to something meaningful.
So @Batalex, does this realize the main thrust of this recommendation? Or was the deferred formatting actually critical to the suggestion?

I proposed the lazy formatting so that special characters would be rendered appropriately:

\textsuperscript in a LaTeX document or  in a notebook

Your suggestion above could work; it seems more complex to replace those characters afterward compared to the following approach
class FormattedValue(str):

    def __init__(self, fmt: Formatter, value: Number, uncertainty: Optional[Number] = None, /) -> None:
        self.fmt = fmt
        self.value = value
        self.uncertainty = uncertainty

    def __str__(self) -> str:
        rendered_options = self.fmt.user_options.render()
        if self.uncertainty is None:
            return format_num(Decimal(str(self.value)), rendered_options)
        else:
            return format_val_unc(Decimal(str(self.value)),
                                  Decimal(str(self.uncertainty)),
                                  rendered_options)

    def _repr_html_(self):
        rendered_options = self.fmt.user_options.render()
        rendered_options.html = True
        if self.uncertainty is None:
            return format_num(Decimal(str(self.value)), rendered_options)
        else:
            return format_val_unc(Decimal(str(self.value)),
                                  Decimal(str(self.uncertainty)),
                                  rendered_options)

    def _repr_latex_(self):
        rendered_options = self.fmt.user_options.render()
        rendered_options.latex = True
        if self.uncertainty is None:
            return format_num(Decimal(str(self.value)), rendered_options)
        else:
            return format_val_unc(Decimal(str(self.value)),
                                  Decimal(str(self.uncertainty)),
                                  rendered_options)

(without all the copy paste)

@Batalex see #134. I've come up with much cleaner way to generate latex compatible strings post-facto. I just had to hit my head against some regexes and string replacements. With this I'm tentatively deciding to drop the latex= option. This gives some decent simplifications throughout the formatting algorithm.
This also made it very easy to implement a FormattedNumber object with _repr_latex_ and _repr_html_ and produce output like the following image in a jupyter notebook.

I'm somehow comfortable having the latex and HTML conversion be outside the scope of the formatter. the Formatter converts python number objects into unicode strings, but then the choice of display in unicode/latex/html depends on the context where the output is going to be used. It is also really nice to REMOVE the latex option rather than ADDING an html option to the Formatter. I'm a bit uneasy about how long the list of options for the Formatter already is.

Wow that's perfect!

are you aware of other tools (other than IPython/jupyter) that would hook into repr_latex or repr_html? If so I'd be curious to test out compatibility with those tools.

Yes, I would love to see how this fits into quarto

Yes, I would love to see how this fits into quarto

Quarto works somewhat as expected. I have this jupyter notebook cell (the same as appears in the latest docs that looks like

When I render this into a quarto html doc I get

So the display functions aren't interleaved as I would naively expect with the print statements. But I think that's a bit of a standard IPython issue that probably has workaround. So not a sciform issue, but rather an IPython thing to figure out.
I'm curious how people want to use the LaTeX features. The display function is one of the most integrated ways to show LaTeX output with python. maptlotlib plots can also show LaTeX. But other than these two cases, I can't imagine how people would be getting LaTeX out of python and into a LaTeX enabled document without a copy and paste step.
Should probably open another issue about this.

Closed by #134


E4.5 - Simple patient documentation search

 [E4.3] As a patient I want to be able to search through medical record, so that I choose data that I want to observe. [3]

 (1) PR Simple patient documentation search


Define language abstractions for defining systems of multiple, collaborating contracts

There is a whole group of issues relating to the collaboration between contracts:

https://github.com/ethereum/langlab/issues/2
https://github.com/ethereum/langlab/issues/4
https://github.com/ethereum/langlab/issues/14
https://github.com/ethereum/langlab/issues/15

Collaborating contracts (their addresses) may not be known statically; they might be supplied during deployment. The (new version of the) deployer could fill in these addresses. Nonetheless, one may want to specify restrictions on the kinds of things the collaborator can do (pure, view, store, ...). This is especially useful if we have interfaces, because then we can specify the interface of a (not yet known) collaborator.

For creating trusted sets of contracts some runtime support is needed to ensure that only contracts of the set can communicate. Today, this is done on Solidity code level, but it could be supported by language constructs.


Added: Locale support

Changes are looking fine, we can go ahead and merge it with master
@contentstack/cli-admin @contentstack/security-admin


Handlers?

Is anyone else interested in simple handlers?  I've added some in our role here:
https://github.com/nexcess/ansible-role-firewall/blob/master/handlers/main.yml
And can PR if it's something that's wanted in general.

I don't think they would work on every platform/versions supoorted.

Good point - will refactor and PR if this is something folks want.

Stale, closing. Feel free to re-open.


Too hightlight on selection

Hi
I made test with my create theme and I have issue with highlight selection, it is too more lightning.
Have you a solution or setting to keep same color as original?
Thank you

This is a designed choice, there's no easy option to set it.  But there's a way to adjust it if you compile the NdkBootPicker.efi from the source, all you have to do is adjust the number in NdkBootPicker.h to your liking, the default is 80, you can set to 0 if you like your selected icon not change its color.
https://github.com/n-d-k/NdkBootPicker/blob/master/NdkBootPicker.h#L161