[
https://issues.apache.org/jira/browse/DRILL-7125?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16797522#comment-16797522
]
Sorabh Hamirwasia commented on DRILL-7125:
------------------------------------------
*Sorabh:*
I was looking into this customer issue where *Refresh Metadata* query is
failing after upgrade from 1.13.0 to 1.15.0. Below are my findings:
1) Until 1.13 all the metadata cache file related access was done using process
user. This was enforced by DRILL-4143 [PR:
Link|https://github.com/apache/drill/pull/470/files] .The way it was done is
all the filesystem instance passed to Metadata class was ignore and instead
FileSystem instance created using process user context was only used.
2) In 1.14 with DRILL-6331, [PR:
Link|https://github.com/apache/drill/commit/c6549e58859397c88cb1de61b4f6eee52a07ed0c#diff-45bfe599bc468a9fd85319266b1222dd]
there was some refactoring done to support filter/limit push down in cases
where Hive Native Parquet reader is used. This change removed the fix done in
DRILL-4143 above. I guess it expected that all the caller will call with
correct FileSystem object references which was actually not the case.
With change 2 above from 1.14 it looks like metadata refresh call (both
explicit and auto refresh) will not work if issued with a user other than Drill
process user. Probably all the tests are run as process user and hence the
issue was never caught.
Arina - Do you remember if there was any other reason to remove the fix in
DRILL-6331 which was made as part of DRILL-4143 ?
If not then to revert back to older behavior quick fix will be again to ignore
the filesystem instances passed in all the Metadata class api's and just use
the process user FileSystem instance. But this has security issues which were
never fixed and needs to be thought through to address it. *For example:*
1) REFRESH Metadata query can be executed by any user. Even the ones who
doesn't own's the actual data.
2) Metadata file itself is not encrypted hence any user can read this file.
3) If we encrypt the metadata file such that only Drill can understand. Still a
user who doesn't have access to actual data can run query which is totally
served by Metadata file and can get access to those information. Like count(*)
and min/max.
*Arina:*
Hi Sorabh,
The original logic was not removed. Metadata classes started to accept file
system object but for Drill tables it is still created under process user, its
just ParquetGroupScan is responsible for this.
For the refresh metadata use case, I guess we need to create file system under
process user in the RefreshMetadataHandler [2].
Some background:
Metadata class is responsible for creating metadata files and reading metadata
from footers. While for Drill tables having file system under process user is
acceptable, for Hive table special file system is created for each path [3].
That's why responsibility of creating proper file system was moved from
Metadata class to Group Scan classes. I guess I just missed that
RefreshMetadataHandler also calls methods from Metadata class and passes file
system.
[1]
[https://github.com/apache/drill/blob/3d29faf81da593035f6bd38dd56d48e719afe7d4/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java#L241]
[2]
[https://github.com/apache/drill/blob/5aa38a51d90998234b4ca46434ce225df72addc5/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/RefreshMetadataHandler.java#L119]
[3]
[https://github.com/apache/drill/blob/3d29faf81da593035f6bd38dd56d48e719afe7d4/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveDrillNativeParquetScan.java#L207]
*Sorabh:*
Hi Arina*,*
Thanks for your input. With DRILL-6331 the expectation was all the caller of
Metadata class api needs to pass filesystem created under correct user context.
But Chunhui's fix basically just made a change in Metadata class itself to
create a process user related filesystem ignoring the passed object from caller
(probably to avoid changing in all the caller. Kind of a hack).
I know that RefreshMetadataHandler code doesn't create process user file
system, but that will still not fix the issue. Because in that handler it calls
getTable() [1] which internally calls WorkspaceSchemaFactory::create --->
isReadable ---> readBlockMeta using the query user (need not be process user).
Since readBlockMeta is used by both autoRefresh code path and this
RefreshMetadata code path internally it tries to actually write metadata file
if modification time is obsolete. Since this write happens using the query user
file system object it fails. Please see the stack trace below. Just creating
file system object with process user in RefreshMetadataHandler [2] will help to
resolve the case when REFRESH command was executed by a process user only.
Now for all other queries when same *isReadable* code path is executed they
will be again running as query user and probably will fail with same stack
trace if auto refresh logic kicks in.
*Questions:*
For Hive tables why we want to create filesystem for each path while writing
the metadata files ? Does that mean if a table can be accessed by 2 regular
users like UserA and UserB. Then first query running as UserA will create
metadata file as UserA being owner and second query running as UserB will try
to write to the same file as UserB and fail ? Shouldn't metadata cache file
creation be same for both Drill and Hive Tables ?
[1]:
[https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/RefreshMetadataHandler.java#L87]
[2]:
[https://github.com/apache/drill/blob/5aa38a51d90998234b4ca46434ce225df72addc5/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/RefreshMetadataHandler.java#L119]
*Arina:*
1. We create new fs for each Hive table file because each file can have its own
configuration determined by projection pusher [1]. I believe you won't be able
to access parquet files if configuration is incorrect. Not sure of user matters
in this way.2. Hive tables do not have / create / use metadata files, we only
read parquet footers information for them. So all code that reads / writes
metadata files is applicable only for Drill tables.
[1]
[https://github.com/apache/drill/blob/3d29faf81da593035f6bd38dd56d48e719afe7d4/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/store/hive/HiveDrillNativeParquetScan.java#L209]
> REFRESH TABLE METADATA fails after upgrade from Drill 1.13.0 to Drill 1.15.0
> ----------------------------------------------------------------------------
>
> Key: DRILL-7125
> URL: https://issues.apache.org/jira/browse/DRILL-7125
> Project: Apache Drill
> Issue Type: Bug
> Components: Metadata
> Affects Versions: 1.14.0, 1.15.0
> Reporter: Sorabh Hamirwasia
> Assignee: Sorabh Hamirwasia
> Priority: Major
> Fix For: 1.16.0
>
>
> REFRESH TABLE METADATA command worked successfully on Drill 1.13.0, however
> after upgrade Drill 1.15.0 there are errors sometime.
> {code:java}
> In sqlline logging in as regular user "alice" or Drill process user "admin"
> gives the same error (permission denied)
> If this helps, here's also what I am seeing on sqlline
> Error message contains random but valid user's names other than the user
> (Alice) that logged in to refresh the metadata. Looks like during the refresh
> metadata drillbits seems to incorrectly try the metadata generation as some
> random user which obviously does not have write access
> 2019-03-12 15:27:20,564 [2377cdd9-dd6e-d213-de1a-70b50d3641d7:frag:0:0] INFO
> o.a.d.e.w.fragment.FragmentExecutor -
> 2377cdd9-dd6e-d213-de1a-70b50d3641d7:0:0: State change requested RUNNING -->
> FINISHED
> 2019-03-12 15:27:20,564 [2377cdd9-dd6e-d213-de1a-70b50d3641d7:frag:0:0] INFO
> o.a.d.e.w.f.FragmentStatusReporter -
> 2377cdd9-dd6e-d213-de1a-70b50d3641d7:0:0: State to report: FINISHED
> 2019-03-12 15:27:23,032 [2377cdb3-86cc-438d-8ada-787d2a84df9a:foreman] INFO
> o.a.drill.exec.work.foreman.Foreman - Query text for query with id
> 2377cdb3-86cc-438d-8ada-787d2a84df9a issued by alice: REFRESH TABLE METADATA
> dfs.root.`/user/alice/logs/hive/warehouse/detail`
> 2019-03-12 15:27:23,350 [2377cdb3-86cc-438d-8ada-787d2a84df9a:foreman] ERROR
> o.a.d.e.s.parquet.metadata.Metadata - Failed to read
> 'file://user/alice/logs/hive/warehouse/detail/.drill.parquet_metadata_directories'
> metadata file
> java.io.IOException: 2879.5854742.1036302960
> /user/alice/logs/hive/warehouse/detail/file1/.drill.parquet_metadata
> (Permission denied)
> at com.mapr.fs.Inode.throwIfFailed(Inode.java:390)
> ~[maprfs-6.1.0-mapr.jar:na]
> at com.mapr.fs.Inode.flushPages(Inode.java:505)
> ~[maprfs-6.1.0-mapr.jar:na]
> at com.mapr.fs.Inode.releaseDirty(Inode.java:583)
> ~[maprfs-6.1.0-mapr.jar:na]
> at
> com.mapr.fs.MapRFsOutStream.dropCurrentPage(MapRFsOutStream.java:73)
> ~[maprfs-6.1.0-mapr.jar:na]
> at com.mapr.fs.MapRFsOutStream.write(MapRFsOutStream.java:85)
> ~[maprfs-6.1.0-mapr.jar:na]
> at
> com.mapr.fs.MapRFsDataOutputStream.write(MapRFsDataOutputStream.java:39)
> ~[maprfs-6.1.0-mapr.jar:na]
> at
> com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:2085)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1097)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:2645)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:381)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.core.JsonGenerator.writeObjectField(JsonGenerator.java:1726)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata_V3$ColumnMetadata_v3$Serializer.serialize(Metadata_V3.java:448)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata_V3$ColumnMetadata_v3$Serializer.serialize(Metadata_V3.java:417)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeWithType(BeanSerializerBase.java:604)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1396)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1120)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:950)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.writeFile(Metadata.java:548)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.createMetaFilesRecursively(Metadata.java:259)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.createMetaFilesRecursively(Metadata.java:225)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.readBlockMeta(Metadata.java:605)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.readMetadataDirs(Metadata.java:179)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.ParquetFormatPlugin$ParquetFormatMatcher.isReadable(ParquetFormatPlugin.java:251)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory$WorkspaceSchema.create(WorkspaceSchemaFactory.java:615)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory$WorkspaceSchema.create(WorkspaceSchemaFactory.java:407)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.ExpandingConcurrentMap.getNewEntry(ExpandingConcurrentMap.java:96)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.ExpandingConcurrentMap.get(ExpandingConcurrentMap.java:90)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.dfs.WorkspaceSchemaFactory$WorkspaceSchema.getTable(WorkspaceSchemaFactory.java:554)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.calcite.jdbc.SimpleCalciteSchema.getImplicitTable(SimpleCalciteSchema.java:83)
> [calcite-core-1.17.0-drill-r2.jar:1.17.0-drill-r2]
> at
> org.apache.calcite.jdbc.CalciteSchema.getTable(CalciteSchema.java:288)
> [calcite-core-1.17.0-drill-r2.jar:1.17.0-drill-r2]
> at
> org.apache.calcite.jdbc.CalciteSchema$SchemaPlusImpl.getTable(CalciteSchema.java:648)
> [calcite-core-1.17.0-drill-r2.jar:1.17.0-drill-r2]
> at
> org.apache.drill.exec.planner.sql.handlers.RefreshMetadataHandler.getPlan(RefreshMetadataHandler.java:77)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:184)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.DrillSqlWorker.convertPlan(DrillSqlWorker.java:110)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:76)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:584)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:272)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [na:1.8.0_152]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [na:1.8.0_152]
> at java.lang.Thread.run(Thread.java:748) [na:1.8.0_152]
> 2019-03-12 15:27:23,446 [2377cdb3-86cc-438d-8ada-787d2a84df9a:foreman] ERROR
> o.a.d.e.p.s.h.RefreshMetadataHandler - Failed to update metadata for table
> '/user/alice/logs/hive/warehouse/detail'
> java.io.IOException: 2879.5854742.1036302960
> /user/alice/logs/hive/warehouse/detail/file1/.drill.parquet_metadata
> (Permission denied)
> at com.mapr.fs.Inode.throwIfFailed(Inode.java:390)
> ~[maprfs-6.1.0-mapr.jar:na]
> at com.mapr.fs.Inode.flushPages(Inode.java:505)
> ~[maprfs-6.1.0-mapr.jar:na]
> at com.mapr.fs.Inode.releaseDirty(Inode.java:583)
> ~[maprfs-6.1.0-mapr.jar:na]
> at
> com.mapr.fs.MapRFsOutStream.dropCurrentPage(MapRFsOutStream.java:73)
> ~[maprfs-6.1.0-mapr.jar:na]
> at com.mapr.fs.MapRFsOutStream.write(MapRFsOutStream.java:85)
> ~[maprfs-6.1.0-mapr.jar:na]
> at
> com.mapr.fs.MapRFsDataOutputStream.write(MapRFsDataOutputStream.java:39)
> ~[maprfs-6.1.0-mapr.jar:na]
> at
> com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:2085)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.core.json.UTF8JsonGenerator.flush(UTF8JsonGenerator.java:1097)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:2645)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:381)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.core.JsonGenerator.writeObjectField(JsonGenerator.java:1726)
> ~[jackson-core-2.9.5.jar:2.9.5]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata_V3$ColumnMetadata_v3$Serializer.serialize(Metadata_V3.java:448)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata_V3$ColumnMetadata_v3$Serializer.serialize(Metadata_V3.java:417)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeWithType(BeanSerializerBase.java:604)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1396)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1120)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> com.fasterxml.jackson.databind.ObjectWriter.writeValue(ObjectWriter.java:950)
> ~[jackson-databind-2.9.5.jar:2.9.5]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.writeFile(Metadata.java:548)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.createMetaFilesRecursively(Metadata.java:259)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.createMetaFilesRecursively(Metadata.java:225)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.store.parquet.metadata.Metadata.createMeta(Metadata.java:111)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.handlers.RefreshMetadataHandler.getPlan(RefreshMetadataHandler.java:124)
> ~[drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getQueryPlan(DrillSqlWorker.java:184)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.DrillSqlWorker.convertPlan(DrillSqlWorker.java:110)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.planner.sql.DrillSqlWorker.getPlan(DrillSqlWorker.java:76)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> org.apache.drill.exec.work.foreman.Foreman.runSQL(Foreman.java:584)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at org.apache.drill.exec.work.foreman.Foreman.run(Foreman.java:272)
> [drill-java-exec-1.15.0.0-mapr.jar:1.15.0.0-mapr]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [na:1.8.0_152]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [na:1.8.0_152]
> at java.lang.Thread.run(Thread.java:748) [na:1.8.0_152]
> 2019-03-12 15:27:23,459 [2377cdb3-86cc-438d-8ada-787d2a84df9a:frag:0:0] INFO
> o.a.d.e.w.fragment.FragmentExecutor -
> 2377cdb3-86cc-438d-8ada-787d2a84df9a:0:0: State change requested
> AWAITING_ALLOCATION --> RUNNING
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)